VBA:如果单元格格式是date然后做一些事情

我有一个macros设置条件的问题。 它应该这样做:

If CELL_A is * **AND** CELL_B is **DATE** then....

  Sub kontrolafyzprav() radek = 4 With List1 Do While .Cells(radek, 3) <> "" If .Cells(radek, 3) = "DOM" And .Cells(radek, 7).NumberFormat = "General" Then .Cells(radek, 3).Interior.Color = RGB(255, 150, 150) .Cells(radek, 7).Interior.Color = RGB(255, 150, 150) ElseIf .Cells(radek, 3) = "MO" And .Cells(radek, 7).NumberFormat = "d/m/yyyy" Then .Cells(radek, 3).Interior.Color = RGB(255, 150, 150) .Cells(radek, 7).Interior.Color = RGB(255, 150, 150) ' :( :( :( :( End If radek = radek + 1 Loop End With End Sub 

ElseIf .Cells(radek, 3) = "MO" And .Cells(radek, 7).NumberFormat = "d/m/yyyy" Then我尝试了所有我能想到的事情。

第一组条件很好,但我不能得到第二个:/

任何帮助?

本机VBA IsDate函数可以很好地确定单元格的内容,看它是否包含date。 由Range.Value属性 (但不是Range.Value2属性 )保留的区域date特定设置有助于确定。

 Sub kontrolafyzprav() Dim raek As Long radek = 4 With List1 Do While .Cells(radek, 3) <> "" If .Cells(radek, 3) = "DOM" And .Cells(radek, 7).NumberFormat = "General" Then .Cells(radek, 3).Interior.Color = RGB(255, 150, 150) .Cells(radek, 7).Interior.Color = RGB(255, 150, 150) ElseIf .Cells(radek, 3) = "MO" And IsDate(.Cells(radek, 7)) Then .Cells(radek, 3).Interior.Color = RGB(255, 150, 150) .Cells(radek, 7).Interior.Color = RGB(255, 150, 150) ' :( :( :( :( End If radek = radek + 1 Loop End With End Sub 

IsDate函数不会被一个无效的文本看起来像一个date所迷惑。