
Excel2003 VBAにて条件付き書式のマクロを書きたいのですが、どうも上手くいきません。
1列おき(C列、E列、G列・・・)に条件付き書式を設定し、
条件は、
・セルの値が”0”より大きい場合はフォント”赤”で表示。
・セルの値が”0”より小さい場合はフォント”緑”で表示。
としたいと思いマクロを組んでみました。
Sub Color()
Dim j, j0
Dim x
Worksheets("sheet1").Active
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
デバックでステップインしていくと、ここで実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。がでます。
Selection.FormatConditions(1).Font.ColorIndex = 3
--------------------------------------------------------------------------------------
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
--------------------------------------------------------------------------------------
この間は、マクロの自動記録で書かれてるので間違ってはいないハズなのですが、、、
お知恵を下さい。
よろしくお願いします。
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
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
なお、普通は、書式で行えるはずですが、同じ「緑色」の表現が出来ませんでした。
上記修正して頂いたマクロ実行し正常に動作しました。
ありがとうございます。
マクロを実行するシート選択の記述が必要だったんですね。
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
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) エクセルVBAで次の二つを行いたいのですが思うように動きません。どう修正したらよいのでしょうか? 2 2023/04/22 14:55
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Visual Basic(VBA) VBA シート上にドロップダウンリストを作り、予め指定値をセットしたいのですが 1 2023/03/25 15:15
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
VLOOKUP関数を使用時、検索する...
-
検便についてです。 便は取れた...
-
値が入っているときだけ計算結...
-
excelでsin二乗のやり方を教え...
-
Excel 数値の前の「 ' 」を一括...
-
尿検査前日に自慰行為した時の...
-
EXCELで式からグラフを描くには?
-
彼女のことが好きすぎて彼女の...
-
2つの数値のうち、数値が小さい...
-
【Excelで「正弦波」のグラフを...
-
腕を見たら黄色くなってる部分...
-
精液の落とし方を教えてください
-
ある範囲のセルから任意の値を...
-
リンク先のファイルを開かなく...
-
小数点以下を繰り上げたものを...
-
病院側から早く来てくださいと...
-
Excel 0目標に対して数字があ...
-
EXCELで条件付き書式で空白セル...
-
化合物のモル吸光係数データベ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
エクセルで空白セルを含む列の...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
ある範囲のセルから任意の値を...
おすすめ情報