こんばんは。
以下をアドインにすることは可能だと思いますが、アドインの場合は、ユーザーフォームを加工したりするほうがよいでしょうね。
ただし、こんな検索は出来ません。第一検索語が「あい」で、第二検索語が「あ」の場合は、重複してしまいますので、出来ません。また、常識的にほとんどすべてのセルに存在するものを、第一検索語には入れないほうがよいです。完全にデバッグが終わったわけではありませんが、一応、こちらではうまく出来ています。
'標準モジュールに入れてください。
'-------------------------------------------------------
Sub FindDoubleWords()
'第一語、第二語検索
Dim c As Range
Dim fstFind As String
Dim sndFind As String
Dim myFadd As String
Dim myAdd As String
Dim u As Range
Dim n As Variant
fstFind = Application.InputBox("第一検索語を入れてください。", Type:=2)
If fstFind = "False" Or fstFind = "" Then Exit Sub
sndFind = Application.InputBox("第一検索語を入れてください。", Type:=2)
If sndFind = "False" Or sndFind = "" Then Exit Sub
If InStr(fstFind, sndFind) > 0 Then
MsgBox "第一検索語: " & fstFind & " が、第二検索語: " & sndFind & vbCrLf & _
" に等しいか、充当される場合、その語の検索は出来ません。", vbInformation, "検索エラー"
Exit Sub
End If
Set c = ActiveSheet.UsedRange.Find( _
What:=fstFind, _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
If Not c Is Nothing Then
myFadd = c.Address
myAdd = c.Address
Do
Set c = ActiveSheet.UsedRange.FindNext(c)
If c.Address = myFadd Then Exit Do
myAdd = myAdd & "," & c.Address
Loop Until c Is Nothing
End If
On Error Resume Next
For Each n In Split(myAdd, ",")
If u Is Nothing Then
Set u = Range(n)
Else
Set u = Union(u, Range(n))
End If
Next n
If Err.Number > 0 Then MsgBox "エラーが発生していますので検索できません。", vbCritical: Exit Sub
On Error GoTo 0
'第二検索
Set c = u.Find( _
What:=sndFind, _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
If Not c Is Nothing Then
myFadd = c.Address
c.Activate
If MsgBox("次を検索しますか?", vbOKCancel) = vbCancel Then Exit Sub
Do
Set c = u.FindNext(c)
If c.Address = myFadd Then Exit Sub
c.Activate
If MsgBox("次を検索しますか?", vbOKCancel) = vbCancel Then Exit Sub
Loop Until c Is Nothing
End If
End Sub
お礼
教えて下さって本当にありがとうございます。 早速やってみました。感動です! 「単語指定順」を気をつけながら役立たさせていただきます。