• ベストアンサー

複数の条件付書式

B列に1~5までに数字がランダムにはいっています。 条件は ・B列が空白ならA列は無色 ・B列が1ならA列は赤 ・B列が2ならA列は青 ・B列が3ならA列は黄色 ・B列が4ならA列は緑 というのをマクロで行ないたいです。 自分で記録して Sub Macro32() Columns("A:A").Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=""""" Selection.FormatConditions(1).Interior.Pattern = xlNone Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=1" Selection.FormatConditions(2).Interior.ColorIndex = 38 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=2" Selection.FormatConditions(3).Interior.ColorIndex = 40 End Sub 4つ目に Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=3" Selection.FormatConditions(4).Interior.ColorIndex = 32 とするとエラーになります。 3つ以上の条件付書式の書き方を教えてください。 あとこの構文のSelectionはwithで省略できますか? よろしくお願いします。

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

  • ベストアンサー
回答No.4

sheetのイベントに記述する方法もあります。 これなら設定数の制限はありません。 B列が変更されると、変更された行の、A列の塗りつぶし属性を変更します。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then '変更されたのはB列? With Cells(Target.Row, 1).Interior 'A列の塗りつぶし属性 Select Case Target.Value Case 0: .ColorIndex = 0 'なし Case 1: .ColorIndex = 3 '赤 Case 2: .ColorIndex = 5 '青 Case 3: .ColorIndex = 6 '黄 Case 4: .ColorIndex = 4 '緑 '必要なら以下に記述 Case Else: .ColorIndex = 0 'なし(条件に合わない場合の塗りつぶし属性) End Select End With End If End Sub

sdfdfadgh
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

その他の回答 (3)

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.3

条件付書式の機能を使うと、最大3つの制限に引っかかってしまいます 従って、条件付書式の機能そのものをマクロ(VBA)化しなければなりません 例えば ---------------- Sub TEST()   If Cells(1, "B") = 1 Then     Cells(1, 1).Interior.ColorIndex = 3   End If End Sub ----------------- これは、B1が1の場合A1を赤にするものです あとは、これに他の条件を追加し、ループすれば出来ると思います ループの終了判定は色々有るので書きませんが、分らない場合は、また質問してください

sdfdfadgh
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.2

マクロで条件付書式の機能を使っているので3つまでです。 条件付書式を使わなければいくつでも設定できます。

sdfdfadgh
質問者

補足

条件付書式を使わない方法ならできるということでしょうか? ご回答ありがとうございます。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

2003までは、3つしか設定できません。 2007なら制限はありません。

sdfdfadgh
質問者

補足

マクロでも3つしかできないのですか!? 知りませんでした。 ご回答ありがとうございます。

関連するQ&A