またまた整理しました。
Sub Test3()
Dim fnd As Range, R As Boolean, C As Boolean
Dim adr As String
Dim keyWord As String
keyWord = Range("P1").Value
Range("A1:N10").Interior.Color = xlNone
Set fnd = Range("A1:N10").Find(What:=keyWord, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchByte:=True)
If fnd Is Nothing Then
MsgBox keyWord & " は見つかりませんでした。", 48
Exit Sub
End If
adr = fnd.Address
Do
R = fnd.Row Mod 2 = 0
C = fnd.Column Mod 2 = 0
fnd.Offset(R, C).Resize(2, 2).Interior.Color = vbYellow
Set fnd = Range("A1:N10").FindNext(fnd)
Loop While adr <> fnd.Address
End Sub
質問者
お礼
さっそくのご回答ありがとうございます。
Sub Test、Sub Test2のマクロで試しましたら
希望どおりの結果が得られて満足しております。
さらに、Sub Test3まで作って頂き、ありがとうございます。
コードを整理しました。
Sub Test2()
Dim fnd As Range, R As Long, C As Long
Dim adr As String
Dim keyWord As String
keyWord = Range("P1").Value
Range("A1:N10").Interior.Color = xlNone
Set fnd = Range("A1:N10").Find(What:=keyWord, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchByte:=True)
If fnd Is Nothing Then
MsgBox keyWord & " は見つかりませんでした。", 48
Exit Sub
End If
adr = fnd.Address
Do
R = IIf(fnd.Row Mod 2 = 0, -1, 0)
C = IIf(fnd.Column Mod 2 = 0, -1, 0)
fnd.Offset(R, C).Resize(2, 2).Interior.Color = vbYellow
Set fnd = Range("A1:N10").FindNext(fnd)
Loop While adr <> fnd.Address
End Sub
マクロですが
検索値欄は、P1セルとしています。
Sub Test()
Dim fnd As Range, SP As Range
Dim adr As String
Dim keyWord As String
keyWord = Range("P1").Value
Range("A1:N10").Interior.Color = xlNone
Set fnd = Range("A1:N10").Find(What:=keyWord, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchByte:=False)
If fnd Is Nothing Then
MsgBox keyWord & " は見つかりませんでした。", 48
Exit Sub
End If
adr = fnd.Address
Do
If fnd.Row Mod 2 = 0 And fnd.Column Mod 2 = 0 Then
Set SP = fnd.Offset(-1, -1)
ElseIf fnd.Row Mod 2 = 0 And fnd.Column Mod 2 <> 0 Then
Set SP = fnd.Offset(-1, 0)
ElseIf fnd.Row Mod 2 <> 0 And fnd.Column Mod 2 = 0 Then
Set SP = fnd.Offset(0, -1)
ElseIf fnd.Row Mod 2 <> 0 And fnd.Column Mod 2 <> 0 Then
Set SP = fnd.Offset(0, 0)
End If
SP.Resize(2, 2).Interior.Color = vbYellow
Set fnd = Range("A1:N10").FindNext(fnd)
Loop While adr <> fnd.Address
End Sub
お礼
さっそくのご回答ありがとうございます。 Sub Test、Sub Test2のマクロで試しましたら 希望どおりの結果が得られて満足しております。 さらに、Sub Test3まで作って頂き、ありがとうございます。