16.06.2016如何大于2016年10月29日

时间:2016-10-29 10:00:02

标签: excel vba macros compare

我有一个宏来填充日期背景,如果他们不比今天更好。它工作得很好但是,只是在一个页面中,DateValues没有正确比较。 我试图用MessageBoxes显示结果,它说16.06.2016大于29.10.2016

我的宏:

Sub DolguRenkleri(ByVal StartIndex As Integer, ByVal EndIndex As Integer)
Dim Tarih As String
Dim Formul As String
Dim Formul2 As String
Tarih = Left(Now, 10)
For i = StartIndex To EndIndex - 1
MsgBox (Cells(i, 2).Value > DateValue(Tarih))
If Cells(i, 2) <= DateValue(Tarih) Then
With Range("A" + CStr(i), "H" + CStr(i))
    .Interior.ColorIndex = 6
End With
Formul = "=TOPLA(D" + CStr(i + 1) + ":D" + CStr(EndIndex - 1) + ")"     
Formul2 = "=F6-A" + CStr(i)
Else: With Range("A" + CStr(i), "H" + CStr(i))
    .Interior.ColorIndex = 2
End With
End If
Next i
 Range("F1").FormulaLocal = Formul
 Range("F7").FormulaLocal = Formul2
End Sub

1 个答案:

答案 0 :(得分:1)

必须是单元格B10中的“16.06.2016”字符串不被识别为真实Date值,尽管您可能已选择该单元格并为其指定“日期”格式

在这种情况下,请使用

If DateValue(Replace(Cells(i, 2).Value, ".", "/")) <= DateValue(Tarih) Then