
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
VLOOKUP関数を使用時、検索する...
-
Excel 数値の前の「 ' 」を一括...
-
リンク先のファイルを開かなく...
-
MIN関数で空白セルを無視したい...
-
値が入っているときだけ計算結...
-
2つの数値のうち、数値が小さい...
-
腕を見たら黄色くなってる部分...
-
小数点以下を繰り上げたものを...
-
エクセルで空白セルを含む列の...
-
病院側から早く来てくださいと...
-
風俗店へ行く前のご飯
-
Excelグラフのラベルオプション...
-
excelで任意のセルを指定回数コ...
-
エクセルで数式の答えを数値と...
-
EXCELで条件付き書式で空白セル...
-
足がまだら模様になります。ど...
-
エクセルのグラフで、値0のとき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
検便についてです。 便は取れた...
-
値が入っているときだけ計算結...
-
彼女のことが好きすぎて彼女の...
-
尿検査前日に自慰行為した時の...
-
VLOOKUP関数を使用時、検索する...
-
Excel 数値の前の「 ' 」を一括...
-
精液の落とし方を教えてください
-
【Excelで「正弦波」のグラフを...
-
2つの数値のうち、数値が小さい...
-
風俗店へ行く前のご飯
-
精子に血が・・・
-
リンク先のファイルを開かなく...
-
小数点以下を繰り上げたものを...
-
EXCELで条件付き書式で空白セル...
-
イタリアから帰国する際、肉製...
-
excelでsin二乗のやり方を教え...
-
腕を見たら黄色くなってる部分...
-
病院側から早く来てくださいと...
-
ワードのページ番号をもっと下...
おすすめ情報