0
ユーザーがボタンをクリックしたときにシステムが現在の日付と書かれた日付を比較し、セルを適切な色で塗りつぶすコードがあります。私のコードのエラーはどこですか?
2日前に10-16-2017と書いた場合、背景が赤く塗りつぶされるという問題があります。今日チェックすると色が黄色に変わります。 問題は、いったんセルが色付けされると決して色を変えないということです。例
:最初の色が赤になりますので
日2017年10月16日には3前に書かれました。
今日は10-16-2017ですので、ボタンを押すと黄色に変わります。
は、ここに私のコードです:
Private Sub CommandButton1_Click()
Dim i As Integer
For i = Range("C5000").End(xlUp).Row To 2 Step -1 'Range upto 5000, chnge this as per your requirment'
If IsEmpty(Cells(i, 3)) Then
Exit Sub
ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) < 0 Then
Cells(i, 3).Interior.Color = vbGreen
ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) = 0 Then
Cells(i, 3).Interior.Color = vbYellow
ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) >= 1 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) <= 4 Then
Cells(i, 3).Interior.Color = vbRed
ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) >= 5 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) <= 10 Then
Cells(i, 3).Interior.Color = vbCyan
Else
Cells(i, 3).Interior.ColorIndex = xlNone
End If
Next
End Sub
これは私の目的のために完全に機能します。ワークシート参照の不足のために、それはあなたの間違った場所を指している可能性がありますか?ワークシートとしてDim ws = ActiveWorkbook.Sheets( "Whatever_Your_Sheet_Name_Is") 'を設定し、すべての範囲/セルを' ws.Range(...) 'と' ws.Cell(...) 'として指定します。それが役立つかどうかを確認してください。 –
みんな私が今10-14-2017を書いてボタンをクリックすると緑色に変わってしまうのですが...もし私が10-14-2017に10-14-2107を書いていたら、それは黄色になります。私の問題であることは決して変わりません –
はい、2日前から '<0'です。 – danieltakeshi