【Word VBA】カーソル位置より前に同じ文字列が記載されているか調べるWordマクロ

2010年4月22日

翻訳の最中に、特定の名称の冠詞はtheなのか、aなのか、迷ったことありませんか?

いや、複雑な定冠詞と不定冠詞の話をしているのではなくて、たた単純にこの名称が今までの文中に出てきたのかどうか、調べることなんですが。

このマクロでできること

選択した文字列が、選択したカーソルの位置よりも前に記載されているのかどうかを調べるマクロです。

マクロの解説

メッセージボックスで対話をしながら、出てくる文字列の位置を確認することができます。

「はい(Y)」をクリックすると、次の検索をします。

「いいえ(N)」をクリックすると、最初に選択した文字列の位置にカーソルが戻ります。

私は、[Alt] + [F] に登録して使っています。

マクロ


Sub 前の記載を調べるマクロ()

 Dim myRange As Range
 Dim Msg, Style, Title, Response As String
 Dim SS, SE As Long
 Dim FoundBln As Boolean
 
 SS = Selection.Start
 SE = Selection.End
 FoundBln = False
 
 '文字列が選択されていない場合には終了
 If SS = SE Then End
 
 '表示される言葉の設定
 Msg = "次を検索しますか?"
 Style = vbYesNo + vbQuestion + vbDefaultButton2
 Title = "検索結果"
 
 Set myRange = ActiveDocument.Range(0, 0)
 
 With myRange.Find
 
  .Wrap = wdFindStop
  .Execute findtext:=Selection.Text
  
  Do While .Found = True
   If myRange.Start <> SS Then
    FoundBln = True
    myRange.Select
    Response = MsgBox(Msg, Style, Title)
    If Response = vbYes Then
     myRange.Collapse direction:=wdCollapseEnd
     .Execute
    Else
     Exit Do
    End If
   Else
    If FoundBln = False Then
     MsgBox "見つかりませんでした。"
     Selection.Collapse direction:=wdCollapseEnd
     End
    Else
     MsgBox "これ以上見つかりませんでした。"
     Exit Do
    End If
   End If
  Loop
 
 End With
 
 Set myRange = ActiveDocument.Range(SS, SS)
 
 With myRange.Find
  .Wrap = wdFindStop
  .Execute findtext:=Selection.Text
 End With
 
 myRange.Select
 Selection.Collapse direction:=wdCollapseEnd
 
 Set myRange = Nothing

End Sub

関連記事

Wordマクロ一覧(用途別)

Wordマクロ一覧(機能別)

-コード
-,