- ベストアンサー
4つのセルを1つの塊りとして塗潰す方法
- 下図の様に、a~n、1~10の合計140個のセルに数字が1~99迄の重複有りで入っています。
- 140個のセルは縦:5マス、横:7マスの合計35マスとなります。
- 検索値に07を入れたら、下記の3マス(12セル)が塗潰される。 c3,d3,c4,d4 e3,f3,e4,f4 a7,b7,a8,b8
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
またまた整理しました。 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
その他の回答 (3)
- watabe007
- ベストアンサー率62% (476/760)
コードを整理しました。 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
- watabe007
- ベストアンサー率62% (476/760)
訂正です。m(_ _)m Set fnd = Range("A1:N10").Find(What:=keyWord, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByRows, MatchByte:=False) ↓ ↓ ↓ Set fnd = Range("A1:N10").Find(What:=keyWord, LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, MatchByte:=True)
- watabe007
- ベストアンサー率62% (476/760)
マクロですが 検索値欄は、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まで作って頂き、ありがとうございます。