• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:4つのセルを1つの塊り(マス)ととらえて塗潰す方法)

4つのセルを1つの塊りとして塗潰す方法

このQ&Aのポイント
  • 下図の様に、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

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.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

moguo4649
質問者

お礼

さっそくのご回答ありがとうございます。 Sub Test、Sub Test2のマクロで試しましたら 希望どおりの結果が得られて満足しております。 さらに、Sub Test3まで作って頂き、ありがとうございます。

その他の回答 (3)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

コードを整理しました。 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)
回答No.2

訂正です。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)
回答No.1

マクロですが 検索値欄は、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

関連するQ&A

専門家に質問してみよう