テキストボックスの先頭にカーソルを置く(Word)
テキストボックス内の先頭にカーソルを置く
Documentオブジェクトの場合
Document
オブジェクトの先頭位置にカーソルを置くのは簡単。
Document.Range(0, 0).Select
とすれば、ドキュメントの先頭位置にカーソルを置くことができる。
テキストボックスの場合
ところが、テキストボックスの場合、Range
メソッドを持つオブジェクトが見当たらない(ですよね?)ので、そもそも
Object.Range(0, 0)
で先頭位置のRange
オブジェクトを取得することができない。
テキストボックスはWord.Shape
オブジェクト。テキストボックスに書き込まれたテキストを取得するには、
Document.TextFrame.TextRange.Text
と、非常に多くの階層をたどる必要がある。
「TextRange
」というのがRange
オブジェクトを返しそうな名前のプロパティなので調べてみると、確かにRange
オブジェクトを返すらしい。
で、イミディエイト・ウインドウに、次のように打ち込んで[Enter]してみる。
ActiveDocument.TextFrame.TextRange.Select
このように、テキストボックス内のすべてのテキストが選択された。
これにCollapse
メソッドを組み合わせたら、カーソルを先頭に置くことは可能だろう。
カーソルをテキストボックスの先頭に置くコード
リスト1 標準モジュール
Public Sub test() ActiveDocument.Shapes(1).TextFrame.TextRange.Select Call Selection.Collapse(Direction:=wdCollapseStart) End Sub
選択範囲を、開始位置方向に向けて潰す、といったイメージのコード。
TextFrame
オブジェクトの段階でRange
メソッド使わせてくれたらいいのに……。
こいつを実行すると、
わかりづらい画像ですまない。
カーソルが先頭に来ている。
これで、Find
オブジェクトを使って検索することができる。