昨日の、「『検索する文字列』欄に自動入力する場合としない場合 」の内容が、あまりにも玄人受けしたので、驚きました。
丁寧に検証した甲斐がありました(笑)。
コメントをいただいたsignapiさんときぬあささん、どうもありがとうございました。
signapiさんのコメント
面白い!!
僕も、新田さんと同じように検索置換をマクロで処理しているので、あまり追求したことなかったですが、確かに不思議に思ったことがあります。そういう決まりがあったんですね。勉強になりました。
きぬあささんのコメント
ここまで細かく見たことはありませんでしたので参考になりました。
> Wordが単語として認識…
オブジェクトとしてはWordsコレクションでしょうか。
Public Sub Sample()
Dim r As Word.RangeFor Each r In ActiveDocument.Words
Debug.Print r.Text
Next
End Sub単語レベルで抜き出したいときには使えそうですね!
やっぱり、みなさんなんとなく不思議に思われているのですね。
さて、そのきぬあささんからいただいたコードで、面白いことができます。
VBE の便利な使い方ができますので、ぜひ覚えてみてください。
<目次>
できること
繰り返し処理などで、値が変化する変数の値を書き出すことで、変数の変化の様子を確認することができます。
変数というとなかなかわかりにくいですが、ちょうどsignapiさんが先日書かれていた記事がわかりやすいのでご覧ください(変数とは )。
この変数の変化の確認に、VBEのイミディエイトウィンドゥというものを使います。
ここに、変数の値が変化する毎に、その値が記録されます。
なので、過去の値もみる事ができますので、変数の変化する様子がわかるのです。
マクロ(きぬあささんからいただいたもの)
Public Sub Sample() Dim r As Word.Range For Each r In ActiveDocument.Words Debug.Print r.Text Next End Sub
解説
青文字で書かれたとおり、r という変数がWordsコレクションの1つを示しています。
紫で書かれた部分で、現在選択されている文書中のWordsコレクションのうちの1つを選択します。
赤字のDebugというオブジェクトのPrintメソッドで、プログラムの実行時にイミディエイトウィンドゥにr のテキストを書出します。
今、手元にある「できる大事典 Excel VBA―2000/2002/2003対応」のP.226を見ながらこの記事を書いております。
けっこう難しいですね。
このオブジェクトの取り扱いというのは。。。
とりあえずは、上記のマクロを実行してみて、何が起こるのかをご覧になるのが一番わかりやすいと思います。
実行の方法
マクロの登録方法は、「マクロコードの登録方法」をご覧ください。
イミディエイトウィンドウの出し方および、実行結果の表示は、以下の通りです。
1.Word画面から、VBEを開きます。
Word画面から[Alt] + [F11] で開くことができます(「VBEとWordの表示切り替え方法」をご参照ください)。
ここに、上記のマクロが登録されています。
2.メニューの表示>イミディエイトウィンドウを選択します。
3.イミディエイトウィンドウが画面下に表示されました。
4.Word文書に「This is a pen.」と記入して、このマクロを実行します。
すると、イミディエイトウィンドウに、以下のような表示がされます。
拡大するとこんな感じ。
つまり、文書中のWordsコレクションを1つずつ書出してみたら、上記のように5つありましたよ、ということなんです。
今後の応用
プログラミングにおいて、自分の予想と違う動きが見られたときには、この
Debug.Print 書出す内容
は、便利ですね。