- ベストアンサー
Word2007マクロでタイトル行内のキーワード検索
- Word2007のマクロを使って、タイトル行内でキーワード検索を行いたいです。単語が1個飛ばしに選択されてしまう問題が発生しています。どこを変更すればいいでしょうか?
- Word2007のマクロでタイトル行内の単語をキーワード検索する方法を教えてください。現在、単語が1つ飛ばしに選択されてしまう問題があります。
- Word2007のマクロでタイトル行内のキーワード検索を実行したいです。しかし、単語が1つ飛ばしに選択されてしまうため、どの部分を変更すればいいか分かりません。教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
VBEのステップイン(F8)は試してみましたか? まぁ、コレだけ書ける方なのですから、 ステップインしていれば自力解決できていたのでは? と思いますが・・・(笑) とりあえずそうなる原因から。 Do ~ Loop の間に .Execute が2つあるのが原因です。 Do While .execute で1回検索、 Selection.Find.Execute でもう一回検索。 ってことで、一回のループで2回検索しちゃってるんですね。 なので、この Do をいじってやります。 Do ' OKボタン以外が押されたらループから抜ける If MsgBox("次を検索", vbOKCancel, "確認") <> vbOK Then Exit Do End If ' OKが押されても、検索結果が無かったらループから抜ける If .Execute = False Then Exit Do End If Loop こんな感じで。 Do ~ Loop に While も Until も無いジャン?無限ループジャン? というのはご心配なく。 中にちゃんと「ループ終了条件」を入れているので問題なしです。 ※というか、ほぼ終了条件しか無い書き方ですが(笑) 2つのIFは Or で纏めちゃってもよかったのですが、 一応、可読性重視で別々にしています。 お好みなら纏めちゃってください。 ステップインはデバッグの重要な手法です。 エラーは出ないけど思う処理をしない、なんて時には まずはコレを試してみると何かが見えるかもしれません。 その時は、VBEとワード(エクセルでも同)を 「並べて表示」しておくことを忘れずに。 あ、Application.ScreenUpDating は True にしておきましょう。 じゃないと画面遷移が見えなくなっちゃいますからね。
お礼
添削ありがとうございました。 アドバイス通り、Do~Loop を変更しましたら、 「1個飛ばし」の症状がなくなりました。 マクロはまだ勉強中の身でして、 あっちこっちで壁にぶち当たっております。 失敗も多いですが、一度マクロの恩恵にあずかると、 もう以前の手作業には戻れません。 ステップインは、まだ使った事がないので、 これを機会に勉強したいと思います。 この度はありがとうございました。