• 締切済み

VBマクロ 条件によってセルの色を変えたいのですが…

いつもこちらで勉強させて頂いております。 Excelで、ある二つの言葉を含むセルに色を付けたいのですが、 言葉の組み合わせが5パターンあり 条件付き書式では足りません。 AとBを含むセル 赤 AとCを含むセル 青 AとDを含むセル 黄 AとEを含むセル 緑 AとFを含むセル 紫 といった様に、条件によってセルの色を変えたいのですが… マクロなどで良い方法はありますでしょうか? どなたかアドバイス宜しくお願い致しますm(__)m

みんなの回答

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

Changeイベントを使うなら Private Sub Worksheet_Change(ByVal Target As Range) Dim v1, v2 Dim i As Long With Target If .Count > 1 Then Exit Sub v1 = Array("B", "C", "D", "E", "F") v2 = Array(3, 5, 6, 10, 13) .Interior.ColorIndex = xlNone For i = 0 To UBound(v1) If InStr(.Value, "A") > 0 And InStr(.Value, v1(i)) > 0 Then .Interior.ColorIndex = v2(i) Exit For End If Next i End With End Sub

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

どうぞ~ Dim v1, v2 Dim c As Range, i As Long v1 = Array("B", "C", "D", "E", "F") v2 = Array(3, 5, 6, 10, 13) For Each c In Selection For i = 0 To UBound(v1) If InStr(c.Value, "A") > 0 And InStr(c.Value, v1(i)) > 0 Then c.Interior.ColorIndex = v2(i) Exit For End If Next i Next c

回答No.2

横から失礼します。 *は文字列としてつけたのでしょうか? もし曖昧検索としてつけたのであれば不要だと思います。 InStrは指定した文字列がターゲット文字列内に存在するかどうかを判定するので最初から曖昧検索しています。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

セルA1~A5が範囲とした場合、 Sub try() Dim r As Range For Each r In Range("A1:A5") Select Case True Case InStr(r.Value, "A") * InStr(r.Value, "B") <> 0 r.Interior.ColorIndex = 3 '以下類似 Case Else r.Interior.ColorIndex = xlNone End Select Next End Sub ご参考程度に。

time2007
質問者

補足

n-jun 様 ご回答ありがとうございます。 早速以下の様に変更して試してみたのですが… 変化なしです。 私の変更の仕方に問題があるのでしょうか… Sub try() Dim r As Range For Each r In Range("G1:R100") Select Case True Case InStr(r.Value, "*フライス*") * InStr(r.Value, "*未作業*") <> 0 r.Interior.ColorIndex = 4 '以下類似 Case Else r.Interior.ColorIndex = xlNone End Select Next End Sub

関連するQ&A