Excel VBAによるセル背景色設定
Q&A
解決したいこと
既存の台帳(マクロ)に以下の処理を追加しようとしています。
<ルール>
・本日の日付が納期より5営業日以下になった場合、納期のセルを黄色に塗りつぶす。
・本日の日付が納期当日および納期以降になった場合、納期のセルを赤色に塗りつぶす。
・ステータスが「完了」の場合、塗りつぶしなし。
そして、以下の処理式を記述しました。
Option Explicit
Sub CellsColor()
Dim i As Integer
Dim A As Long
Dim B As Integer
Dim C As Long
Dim D As String
'AF列「納期」欄の記載開始行を設定。
i = 6
'本日から5営業日後の日付をAとする。
A = WorksheetFunction.WorkDay(Date, 5, Worksheets("祝日").Range("A2:A34").Value)
'AF列が空白になるまで処理を繰り返す。
Do Until Cells(i, 32).Value = ""
'納期までの日数をBとする。
B = Cells(i, 32).Value - Date
'5営業日後の日付-納期をCとする。
C = A - Cells(i, 32).Value
'AI列「ステータス」欄の値をDとする。
D = Cells(i, 35).Value
'納期より5営業日以下になった場合、AF列のセルを黄色に塗りつぶす。
'納期当日および納期以降になった場合、AF列のセルを赤色に塗りつぶす。
'AI列が「完了」の場合、塗りつぶしなし。
If C <= 6 And C > 0 And D <> "完了" Then
Cells(i, 32).Interior.Color = RGB(255, 2555, 0) '背景色:黄色
ElseIf B <= 0 And D <> "完了" Then
Cells(i, 32).Interior.Color = RGB(255, 0, 0) ' 背景色:赤色
Else
Cells(i, 32).Interior.Color = xlNone '塗りつぶしなし
End If
i = i + 1
Loop
End Sub
すると、画像のように本日から5営業日後の日付「2022/9/13」のセルが黄色になりません。
発生している問題
自分で試したこと
「If C <= 6 And C > 0 And D <> "完了" Then」
の「C <= 6」を「C <= 7」に変更しても意図した動きになりませんでした。
この解決方法や、処理式全体を通して改善点があれば、ぜひ教えてください。
0 likes