2017-08-01 7 views
0

私は日付が付いた列Iを持っています。 (30.07.2016)。私は列全体を見て、それが今月のものかどうかを見たいと思います。それが8月と同じでないなら、私は(1月 - 7月)緑色に着色し、それは白く8月になり、将来は黄色になります。月を探してセルの値に色をつける

私は以下のコードを試しました。黄色く印刷されています。それは今月だけでなく、今日を探します。

私はあなたが今日の月に対する日(セル値)の月をチェックする必要が

Sub ChangeColour() 

    Dim rCell As Range 

    With Sheets("BU") 
     For Each rCell In .Range("I5", .Cells(.Rows.Count, 9).End(xlUp)).Cells 
      If rCell.Value < Month(today) Then 
       rCell.Interior.Color = vbGreen 
      ElseIf rCell.Value > Month(today) Then 
       rCell.Interior.Color = vbYellow 
      Else 
       rCell.Interior.Color = vbWhite 
      End If 
     Next rCell 
    End With 

End Sub 
+0

これに条件付き書式を使用しない理由は何ですか? VBAよりも簡単にする必要があります。 –

+0

私はVBAで欲しいです。 : – Jenny

答えて

2

を実行することができますどのように助けてもらえます。今日は決して定義されていない変数なので、Month(Date)を使用する必要があります。例えば

Month(rCell.Value) < Month(Date) 
+1

私は 'Month(Date)'は十分だと思う;) –

+0

私はそれが月(日付)であるべきだと思う。少なくとも私のエクセルでは今日はワークシート機能だけですが、vbaではありません。 –

+0

あなたが正しいと確信して、ちょうど私が答えを投稿した後にそれを見ました。時々私は最初に考えるべきです。 –

0
Sub ChangeColour() 
Dim rCell As Range 
With Sheets("BU") 
    For Each rCell In .Range("I5", .Cells(.Rows.Count, 9).End(xlUp)).Cells 
     If Month(rCell.Value) < Month(DateTime.Now) Then 
      rCell.Interior.Color = vbGreen 
     ElseIf Month(rCell.Value) > Month(DateTime.Now) Then 
      rCell.Interior.Color = vbYellow 
     Else 
      rCell.Interior.Color = vbWhite 
     End If 
    Next rCell 
End With 
End Sub 
+0

'today'はここでは宣言されていない変数なので、これは機能しません。 –

+0

@Pehありがとうございました(固定) – Tizzu

+0

また、「Month(Date)」が十分であり、正確な時刻を返す 'Now'よりも好ましいと結論づけた、受け入れられた回答についての議論を見るかもしれません。それで、私はすでに答えたのです。 –

0

あなたのセルの日付がテキストである場合、コードは次のようになります。

Sub ChangeColour() 

    Dim rCell As Range 
    Dim m As Integer, vSplit 

    With Sheets("BU") 
     For Each rCell In .Range("I5", .Range("i" & Rows.Count).End(xlUp)) 
      vSplit = Split(rCell, ".") 
      m = vSplit(1) 
      If m < Month(Date) Then 
       rCell.Interior.Color = vbGreen 
      ElseIf m > Month(Date) Then 
       rCell.Interior.Color = vbYellow 
      Else 
       rCell.Interior.Color = vbWhite 
      End If 
     Next rCell 
    End With 

End Sub 
関連する問題