Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » Shape.TextFrame2.TextRange.Itemとは

対象:Excel 2010, Excel 2013, Windows版Excel 2016

Shape.TextFrame2.TextRange.Itemとは

「excel vba textrange.item」
という検索キーワードでこのサイト「インストラクターのネタ帳」へのアクセスがありました。

このキーワードだけでは何を求めていらしたのか正確にはわかりませんけれど、おそらく以下のようなプロシージャをご覧になったのでしょう。

Sub samp()
 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プロシージャを以下のように、書き直してみましょう。

Sub TextFrame2オブジェクトのTextRangeプロパティを確認する()
 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

 Dim itm As TextRange2
 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オブジェクトです。

Shape.TextFrame2.TextRange.Itemとは

おそらくここが一番のハードルでしょうから、上記プロシージャの名前を「TextFrame2オブジェクトのTextRangeプロパティを確認する」にしました。

サンプルマクロの何を見るべきか

アクティブシートにテキストボックスを作成してから、上記のSubプロシージャを実行すると、End Subの直前Stopステートメントでステップ実行になります。

メニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示すると、変数shp・tfr2・tgt2・itmの中身を確認することができます。

TextRange2オブジェクトのItemプロパティメソッドの戻り値

まずは変数itmを確認しましょう。
これが元のSubプロシージャの、「ActiveSheet.Shapes(1).TextFrame2.TextRange.Item(1)」の戻り値がセットされた変数です。

Shape.TextFrame2.TextRange.Itemとは

上図は「松竹梅」と入力されたテキストボックスが1つ存在するシートがアクティブな状態で実行しているので、Textプロパティで文字列「松竹梅」を取得できることなどを確認できます。

TextFrame2オブジェクトのTextRangeプロパティの戻り値

つづいて変数trg2を確認しましょう。
これが元のSubプロシージャの「ActiveSheet.Shapes(1).TextFrame2.TextRange」の戻り値がセットされた変数です。

Shape.TextFrame2.TextRange.Itemとは

ここで「Item 1」を展開して表示される内容が、先に見た変数itmと同じであることも確認しておきましょう。

「excel vba textrange.item」
を検索なさった方が、何をしたかったのかは不明ですが、「TextFrame2.TextRange」の戻り値も、先に見た「TextRange2.Item(1)」の戻り値も、いずれもTextRange2オブジェクトです。
ですから実はTextRange2.Itemメソッドを使う必要はなかった可能性もあると、私は推測しています。

ShapeオブジェクトのTextFrame2プロパティの戻り値

次は変数tfr2の確認です。
これが元のSubプロシージャの「ActiveSheet.Shapes(1).TextFrame2」の戻り値がセットされた変数です。

Shape.TextFrame2.TextRange.Itemとは

ここで「TextRange」を展開して表示される内容が、先に見た変数trg2と同じであることも確認しておきましょう。

何度もイメージしましょう

「excel vba textrange.item」
を検索した方が、上記の説明を一度読んだだけで理解できることは、あり得ません。

上記説明を参考にしながら、ローカルウィンドウやオブジェクトブラウザーを何度も確認しながら、各プロパティやメソッドが何を返すのかと、階層関係を何度も何度もイメージすることを繰り返すとようやく、図形のテキスト関連のオブジェクトモデルが理解できるようになるはずです。

最終更新日時:2022-08-04 15:48

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 図形内文字列 » Shape.TextFrame2.TextRange.Itemとは

「図形内文字列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.