• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2003 VBAにて条件付き書式のマクロを書きたいのですが、)

Excel2003 VBAで条件付き書式のマクロを設定する方法

このQ&Aのポイント
  • Excel2003のVBAを使用して、条件付き書式のマクロを設定する方法について教えてください。
  • 1列おきに、セルの値が0より大きい場合は赤で表示し、0より小さい場合は緑で表示する条件付き書式を、Excel2003のVBAで設定する方法について教えてください。
  • マクロを組む際に、実行時エラー1004が発生しています。特に、Selection.FormatConditions(1).Font.ColorIndex = 3の行でエラーが出ています。このエラーの原因と解決策について教えてください。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! せっかくコードをお考えですが、 ごくごく単純に・・・ Sub test() Dim i, j As Long For i = 3 To 300 For j = 3 To 100 Step 2 If Cells(i, j) > 0 Then Cells(i, j).Font.ColorIndex = 3 ElseIf Cells(i, j) < 0 Then Cells(i, j).Font.ColorIndex = 10 End If Next j Next i End Sub こんな感じではダメですか?m(__)m

zaq_zaq_zaq
質問者

お礼

同じ事をやるにも知識があるとマクロもシンプルになるのですね。 ありがとうございます。 勉強になりました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>マクロの自動記録で書かれてるので間違ってはいないハズなのですが、、、 いいえ、上の部分でWith ステートメントを削除したようです。 >Range(.Cells(j0, x), .Cells(j, x)).Select ここが違っています。 Sub ConditionFormatColor()  Dim i As Long, j As Long  j= 300 '範囲の開始部分は、3 で、キメウチさせて頂きました。  Application.ScreenUpdating = False  With Worksheets("Sheet1")   For i = 3 To 100 Step 2    With Range(.Cells(3, i), .Cells(j , i))     .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="0"     .FormatConditions(1).Font.ColorIndex = 3     .FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="0"     .FormatConditions(2).Font.ColorIndex = 10    End With   Next  End With  Application.ScreenUpdating = True End Sub なお、普通は、書式で行えるはずですが、同じ「緑色」の表現が出来ませんでした。

zaq_zaq_zaq
質問者

お礼

上記修正して頂いたマクロ実行し正常に動作しました。 ありがとうございます。 マクロを実行するシート選択の記述が必要だったんですね。

  • yucco_chan
  • ベストアンサー率48% (828/1705)
回答No.1

Excel2003にて  Selection.FormatConditions(1).Font.ColorIndex = 3 では、エラーは出ませんでした。 エラーが出るのは、  Worksheets("sheet1").Active と  Range(.Cells(j0, x), .Cells(j, x)).Select 下記で動作しました。 Sub Color() Dim j As Long Dim j0 As Long Dim x As Long Worksheets("sheet1").Activate Application.ScreenUpdating = False j0 = 3 j = 300 For x = 3 To 100 Step 2 Range(Cells(j0, x), Cells(j, x)).Select Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _ Formula1:="0" Selection.FormatConditions(1).Font.ColorIndex = 3 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _ Formula1:="0" Selection.FormatConditions(2).Font.ColorIndex = 10 Next Application.ScreenUpdating = True End Sub

zaq_zaq_zaq
質問者

お礼

yucco_chanさんに修正して頂いたマクロ、正常に動作しました。 ありがとうございます。 Worksheets("sheet1").Activeではなく.Activateですね。 後、Range(.Cells(j0, x), .Cells(j, x)).SelectとRange(Cells(j0, x), Cells(j, x)).Selectの違いはcelllsの前にドットがあるかどうかですが、この違いは大きいのでしょうか?(重ね重ねスミマセン)

関連するQ&A