結果として名前のシートがあります。このシートで 日付とケースの比較とDatedifferenceメソッド
は、私がs.Dateと列Hを持っていると私はいつか空の行を持つ列I.列Hが完全に充填されると、列に日付を起動します。
私は、下記のような場合があります。
Case1。開始日がS.Dateより> 4週間の場合、それはオンタイムで緑色で表示されます
case2:開始日がS.Dateの> 8週間である場合、遅延です。
ケース3:開始日が4〜8週間の場合、残りの部分は黄色です。
ケース4:開始日がS.dateより前の場合、この場合も緑色になります。
上記の3つのケースはすべて達成されていますが、私は4番目のケースを達成する方法に打撃を受けます。 誰も私がそれをやり遂げる方法を提案することができます。参照のために画像も添付してください。私はこれを既に投稿しましたが、私の疑いを明確にするためにpostive repsonseやChatはありません。申し訳ありませんが、私はこの問題を明確にしたいと思います。フォーラムの助けを期待する。
Option Explicit
Sub status()
Dim ws As Worksheet
Dim lrow As Long, i As Long
Dim zWeeks As Double, zcolour As Long
Dim Ztext As String
Set ws = Sheets("Result")
With ws
lrow = .Range("H" & .Rows.Count).End(xlUp).Row
For i = 5 To lrow
zWeeks = DateDiff("ww", .Range("I" & i).Value, .Range("H" & i).Value)
If .Range("E" & i).Value <> "" And .Range("F" & i).Value <> "" And .Range("I" & i).Value = "" Then
Ztext = "remaining"
zcolour = vbYellow
Cells(i, 11) = "Yellow"
ElseIf .Range("F" & i).Value = "" And .Range("I" & i).Value = "" Then
GoTo nextrow
ElseIf zWeeks < 4 Then
Ztext = " on time"
zcolour = vbGreen
Cells(i, 11) = "Green"
ElseIf zWeeks > 8 Then
Ztext = " delayed"
zcolour = vbRed
Cells(i, 11) = "Red"
ElseIf zWeeks > 4 < 8 Then
Ztext = "Remaining"
zcolour = vbYellow
Cells(i, 11) = "Yellow"
End If
With .Range("J" & i)
.Value = Ztext
.Interior.Color = zcolour
End With
nextrow:
Next i
End With
End Sub
私の場合は数週間ではなく、日数を使うことができますか? – Mikz
これは私のコードでどこに追加しますか? @nishit dey – Mikz
負の数値を返していません – Mikz