|
実際の作業のことを考えてみたら、
もう一捻り必要でした。
選択範囲を指定して、[検索]ボタンを押すと、
指定した文字列を検索。
選択していない状態で、[検索]ボタンを押すと、
先に検索した文字列を再検索。
以下、修正版。
Sub MyFindOne()
Rem *----*----* *----*----* *----*----* *----*----*
Rem 選択文字列単発検索処理
Rem 記録者:
Rem 言語:Word VBA
Rem 機能:選択した文字列を検索する。
Rem 注記...
Rem MyFindOneを起動して使用。
Rem Officeアシスタント(モードレス表示)による検索実行。
Rem 第1版:2006/11/01:作成。
Rem *----*----* *----*----* *----*----* *----*----*
Dim blln As Balloon
Dim bttn As Long
Dim bllnID As Long
Rem *----*----* *----*----* *----*----* *----*----*
'
Rem 初期処理を実行させる。
bttn = -888
Call MyFindOneBttn(blln, bttn, bllnID)
End Sub ' MyFindOne *----*----* *----*----* *----*----* *----*----*
Sub MyFindOneBlln(myCbox As Variant)
Rem *----*----* *----*----* *----*----* *----*----*
Rem バルーン表示処理
Rem *----*----* *----*----* *----*----* *----*----*
Assistant.Visible = True
'
With Assistant.NewBalloon
.Animation = msoAnimationIdle
.BalloonType = msoBalloonTypeButtons
.Icon = msoIconAlertQuery
.Button = msoButtonSetSearchClose
.Heading = "MyFindOne" & vbCr & "選択 文字列" & vbCr & "単発 検索 処理"
.Text = "文字列を選択して、[検索]して下さい。"
.Checkboxes(1).Checked = myCbox
.Checkboxes(1).Text = "検索方向:文書の先頭へ"
.Mode = msoModeModeless
.Callback = "MyFindOneBttn"
.Show
End With
End Sub ' MyFindOneBlln *----*----* *----*----* *----*----* *----*----*
Sub MyFindOneBttn(blln As Balloon, bttn As Long, bllnID As Long)
Rem *----*----* *----*----* *----*----* *----*----*
Rem 各ボタン処理
Rem *----*----* *----*----* *----*----* *----*----*
Static myCbox As Variant
'
Select Case bttn
Case -888
Call MyFindOneInit(myCbox)
Call MyFindOneBlln(myCbox)
Exit Sub
Case msoBalloonButtonClose ' [閉じる]ボタン時
myCbox = blln.Checkboxes.Item(1).Checked
blln.Close
Assistant.Visible = False
Exit Sub
End Select
'
If Tasks.Exists(Name:="Microsoft Word") = True Then
Tasks("Microsoft Word").Activate
End If
'
Select Case bttn
Case msoBalloonButtonSearch
myCbox = blln.Checkboxes.Item(1).Checked
Call MyFindOneExec(myCbox)
End Select
End Sub ' MyFindOneBttn *----*----* *----*----* *----*----* *----*----*
Sub MyFindOneExec(myCbox As Variant)
Rem *----*----* *----*----* *----*----* *----*----*
Rem 検索処理
Rem *----*----* *----*----* *----*----* *----*----*
Dim myText As String
'
If Selection.Range.Text = "" Then
With Selection.Find
If myCbox = True Then
.Forward = False ' 文書の先頭へ検索
Else
.Forward = True ' 文書の末尾へ検索
End If
.Execute ' 検索実行
End With
Exit Sub
End If
'
myText = Selection.Range.Text
'
With Selection.Find
.ClearFormatting
.Text = myText
.Replacement.Text = ""
If myCbox = True Then
.Forward = False ' 文書の先頭へ検索
Else
.Forward = True ' 文書の末尾へ検索
End If
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
.Execute ' 検索実行
End With
End Sub ' MyFindOneExec *----*----* *----*----* *----*----* *----*----*
Sub MyFindOneInit(myCbox As Variant)
Rem *----*----* *----*----* *----*----* *----*----*
Rem 初期処理
Rem *----*----* *----*----* *----*----* *----*----*
If TypeName(myCbox) <> "Notihng" Then Exit Sub
'
myCbox = False ' 既定値
End Sub ' MyFindOneInit *----*----* *----*----* *----*----* *----*----*
|
|