プロが教えるわが家の防犯対策術!

D列に ABC とあったら
その行のA列からM列までを赤

同じく
D列に 123 とあったら
その行のA列からM列までを黄色

に、塗り潰すというマクロを教えてください。

1行目はタイトル行
最終行は常に変わります。

エクセル2013

宜しくお願い致します。

A 回答 (1件)

こんにちは!



条件付き書式を二つ設定するのが一番簡単だと思うのですが、
VBAでの方法をご希望だというコトなので、一例です。

やり方として思いつくのが
① オートフィルタを使う
② 1行ずつループさせる

といったやり方になると思います。
今回は②のループさせる方法にしてみました。
尚、1行目は項目行でデータは2行目以降にあるとします。

Sub Sample1()
 Dim i As Long
 Dim myRng1 As Range, myRng2 As Range
  Range("A:M").Interior.ColorIndex = xlNone
   For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row
    If Cells(i, "D") = "ABC" Then
     If myRng1 Is Nothing Then
      Set myRng1 = Range(Cells(i, "A"), Cells(i, "M"))
     Else
      Set myRng1 = Union(myRng1, Range(Cells(i, "A"), Cells(i, "M")))
     End If
    ElseIf Cells(i, "D") = "123" Then
     If myRng2 Is Nothing Then
      Set myRng2 = Range(Cells(i, "A"), Cells(i, "M"))
     Else
      Set myRng2 = Union(myRng2, Range(Cells(i, "A"), Cells(i, "M")))
     End If
    End If
   Next i
  If Not myRng1 Is Nothing Then
   myRng1.Interior.ColorIndex = 3
  End If
  If Not myRng2 Is Nothing Then
   myRng2.Interior.ColorIndex = 6
  End If
End Sub

※ 極端にデータ量が多い場合は
オートフィルタの方が速いと思います。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!