「excel vba textrange.item」
という検索キーワードでこのサイト「インストラクターのネタ帳」へのアクセスがありました。
このキーワードだけでは何を求めていらしたのか正確にはわかりませんけれど、おそらく以下のようなプロシージャをご覧になったのでしょう。
Dim itm As TextRange2
Set itm = ActiveSheet.Shapes(1).TextFrame2.TextRange.Item(1)
End Sub
このプロシージャに登場する「ActiveSheet.Shapes(1).TextFrame2.TextRange.Item(1)」というオブジェクトを取得する式について、調べていらしたのだろうと推測しています。
Shape.TextFrame2オブジェクトの.TextRangeプロパティ.Item(1)を確認するサンプルマクロ
「ActiveSheet.Shapes(1).TextFrame2.TextRange.Item(1)」を、正確に理解するには、この式に登場する個々のプロパティやメソッドが、それぞれ何を返すのかを理解する必要があります。
先のSubプロシージャを以下のように、書き直してみましょう。
Dim shp As Shape
Set shp = ActiveSheet.Shapes(1)
Dim tfr2 As TextFrame2
Set tfr2 = shp.TextFrame2
Dim trg2 As TextRange2
Set trg2 = tfr2.TextRange
Set itm = trg2.Item(1)
Stop
End Sub
先のプロシージャは、
Dim itm As TextRange2
Set itm = ActiveSheet.Shapes(1).TextFrame2.TextRange.Item(1)
といきなり、TextRange2型のオブジェクト変数itmに、ActiveSheet.Shapes(1).TextFrame2.TextRange.Item(1)の戻り値をセットしていましたが、これを順番にオブジェクト変数にセットしています。
「excel vba textrange.item」と検索した方は、
Dim trg2 As TextRange2
Set trg2 = tfr2.TextRange
の部分を疑問に感じるはずですが、これでOKです。
TextFrame2オブジェクトのTextRangeプロパティの戻り値は、TextRangeオブジェクトではなくTextRange2オブジェクトです。
おそらくここが一番のハードルでしょうから、上記プロシージャの名前を「TextFrame2オブジェクトのTextRangeプロパティを確認する」にしました。
サンプルマクロの何を見るべきか
アクティブシートにテキストボックスを作成してから、上記のSubプロシージャを実行すると、End Subの直前Stopステートメントでステップ実行になります。
メニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示すると、変数shp・tfr2・tgt2・itmの中身を確認することができます。
TextRange2オブジェクトのItemプロパティメソッドの戻り値
まずは変数itmを確認しましょう。
これが元のSubプロシージャの、「ActiveSheet.Shapes(1).TextFrame2.TextRange.Item(1)」の戻り値がセットされた変数です。
上図は「松竹梅」と入力されたテキストボックスが1つ存在するシートがアクティブな状態で実行しているので、Textプロパティで文字列「松竹梅」を取得できることなどを確認できます。
TextFrame2オブジェクトのTextRangeプロパティの戻り値
つづいて変数trg2を確認しましょう。
これが元のSubプロシージャの「ActiveSheet.Shapes(1).TextFrame2.TextRange」の戻り値がセットされた変数です。
ここで「Item 1」を展開して表示される内容が、先に見た変数itmと同じであることも確認しておきましょう。
「excel vba textrange.item」
を検索なさった方が、何をしたかったのかは不明ですが、「TextFrame2.TextRange」の戻り値も、先に見た「TextRange2.Item(1)」の戻り値も、いずれもTextRange2オブジェクトです。
ですから実はTextRange2.Itemメソッドを使う必要はなかった可能性もあると、私は推測しています。
ShapeオブジェクトのTextFrame2プロパティの戻り値
次は変数tfr2の確認です。
これが元のSubプロシージャの「ActiveSheet.Shapes(1).TextFrame2」の戻り値がセットされた変数です。
ここで「TextRange」を展開して表示される内容が、先に見た変数trg2と同じであることも確認しておきましょう。
何度もイメージしましょう
「excel vba textrange.item」
を検索した方が、上記の説明を一度読んだだけで理解できることは、あり得ません。
上記説明を参考にしながら、ローカルウィンドウやオブジェクトブラウザーを何度も確認しながら、各プロパティやメソッドが何を返すのかと、階層関係を何度も何度もイメージすることを繰り返すとようやく、図形のテキスト関連のオブジェクトモデルが理解できるようになるはずです。
最終更新日時:2022-08-04 15:48
- Newer:優しいを目指したExcel VBA入門書
- Older:セルに入力されている時間をメッセージボックスに表示する
Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » Shape.TextFrame2.TextRange.Itemとは