• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Word2007のマクロについて)

Word2007マクロでタイトル行内のキーワード検索

このQ&Aのポイント
  • Word2007のマクロを使って、タイトル行内でキーワード検索を行いたいです。単語が1個飛ばしに選択されてしまう問題が発生しています。どこを変更すればいいでしょうか?
  • Word2007のマクロでタイトル行内の単語をキーワード検索する方法を教えてください。現在、単語が1つ飛ばしに選択されてしまう問題があります。
  • Word2007のマクロでタイトル行内のキーワード検索を実行したいです。しかし、単語が1つ飛ばしに選択されてしまうため、どの部分を変更すればいいか分かりません。教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 にしておきましょう。 じゃないと画面遷移が見えなくなっちゃいますからね。

to83085
質問者

お礼

添削ありがとうございました。 アドバイス通り、Do~Loop を変更しましたら、 「1個飛ばし」の症状がなくなりました。 マクロはまだ勉強中の身でして、 あっちこっちで壁にぶち当たっております。 失敗も多いですが、一度マクロの恩恵にあずかると、 もう以前の手作業には戻れません。 ステップインは、まだ使った事がないので、 これを機会に勉強したいと思います。 この度はありがとうございました。