忽略Excel中DateTime单元格的时间

时间:2016-11-18 02:18:47

标签: excel vba excel-vba datetime excel-2013

我正在使用VBA捕获输入到单元格中的日期。我遇到的问题是,如果单元格为空,则VBA将其读取为12:00:00 AM,因此VBA中的ISDATE()函数将其视为日期,但代码会因为不是实际日期而爆炸。什么VBA语法可以检查以验证单元格是否包含DATE?

这是我目前的语法

Sub IsDate()
Dim d1 As Date

d1 = CDate(Range("A1").Value)

If IsEmpty(Range("A1")) = False Then
  If IsDate(d1) = True Then
        'Continue
  End If
End If

1 个答案:

答案 0 :(得分:0)

IsEmpty(Range("A1"))会使用Range("A1").Value <> ""为您提供不一致的结果。

内置VBA方法后不要命名子例程例如Sub IsDate()将覆盖VBA方法并造成严重破坏。

enter image description here

Sub TestIsDate()

    Dim d1 As Date
    If Range("A1").Value <> "" And IsDate(Range("A1").Value) Then
        d1 = CDate(Range("A1").Value)
    End If

End Sub