2

次の場合、VBA で数式を挿入しようとしています。

私のコラムでは、KI は 3 つの条件を求めています。

  • 日付が今日またはそれ以前 (つまり、プロジェクトの期日が今日またはそれ以前) = 赤
  • 日付が今日 + 最大 7 日 = オレンジ
  • 日付が今日で 7 日未満 = 緑

私は次のようなものを使用することを考えていました:

Sub ChangeColor()
    lRow = Range("K" & Rows.Count).End(xlUp).Row
    Set MR = Range("K3:K" & lRow)
    For Each cell In MR
        If cell.Value = "TODAY" Then cell.Interior.ColorIndex = 10
        If cell.Value = "TODAY-7days" Then cell.Interior.ColorIndex = 9
        If cell.Value = "Morethan7Days" Then cell.Interior.ColorIndex = 8
    Next
End Sub

私は試してきましたが、それを行う方法がわかりません。

私のやり方は正しいと思いますが、If date=-7days then などをコーディングする方法がわかりません。

誰かがガイダンスを提供できますか?:)

4

2 に答える 2

2

VBA には、今日の日付を返す Date 関数があります。VBA の日付は 1900 年 12 月 31 日からの日数 (通常は閏年のバグがあります) であるため、日付に整数を減算または加算して、過去および将来の日付を取得できます。

Sub ChangeColor()

    Dim rCell As Range

    With Sheet1
        For Each rCell In .Range("K3", .Cells(.Rows.Count, 11).End(xlUp)).Cells
            If rCell.Value <= Date Then
                rCell.Interior.Color = vbRed
            ElseIf rCell.Value <= Date + 7 Then
                rCell.Interior.Color = vbYellow
            Else
                rCell.Interior.Color = vbGreen
            End If
        Next rCell
    End With

End Sub
于 2012-07-17T15:19:11.677 に答える
1

アンダーソン氏は、条件付き書式でこれを達成できることは正しいですが、VBA でこれを行う場合は、日付を保持する変数を作成し、現在の日から時間を引いた値に設定します。次に、セルの値を日付形式にフォーマットするだけです。これが完了したら、dateAdd を使用して、日数を減算できます。下記参照

Sub ChangeColor()

Dim myDate As Date
'format the date excluding time
myDate = FormatDateTime(Now, 2)

lRow = Range("K" & Rows.Count).End(xlUp).Row
Set MR = Range("K3:K" & lRow)
    For Each cell In MR
        If FormatDateTime(cell.Value, 2) = myDate Then cell.Interior.ColorIndex = 10
        If FormatDateTime(cell.Value, 2) = DateAdd("d", -7, myDate) Then cell.Interior.ColorIndex = 9
        If FormatDateTime(cell.Value, 2) = DateAdd("d", 7, myDate) Then cell.Interior.ColorIndex = 8
    Next

End Sub

等しいかどうかを確認した結果、今日の日付、今日から 7 日間、今日から 7 日前の日付のみが内側の色で塗りつぶされることに気付きました。大なり小なりすべての内側のセルの色を塗りつぶす

すべての編集で申し訳ありません

于 2012-07-17T15:17:24.620 に答える