如果在另一个工作簿上比较输入日期与日期时,Statement未评估为True

时间:2015-04-27 16:53:25

标签: excel vba excel-vba

我觉得我的问题可能有一个非常简单的解决方案,但对于我的生活,我找不到它。我有两个工作簿,在某些时候需要将用户输入的日期与工作表上已有的日期进行比较。我已经将问题提取到了一些非常简单的代码中。

Dim wbk As Workbook
Dim MyValue As Variant
MyValue = InputBox("Enter Date")
Set wbk = Workbooks("Some Workbook")
If wbk.Worksheets(1).Range("A1").Value = MyValue Then '<--- This is Evaluating to False
    MsgBox "True"
End If

假设我使用的日期是1/1/2000。如果我写Msgbox wbk.Worksheets(1).Range("A1"),我将获得1/1/2000。我将在1/1/2000中输入到输入框中,因此对于所有意图和目的,if语句应该被评估为true。

2 个答案:

答案 0 :(得分:3)

这是一个数据类型问题。逐步执行代码并观察每个值的数据类型。工作表范围内的值为string,输入框中的值为Dim wbk As Workbook Dim MyValue As Variant MyValue = InputBox("Enter Date") Set wbk = ActiveWorkbook Dim inputDate As Date If IsDate(MyValue) Then inputDate = CDate(MyValue) If wbk.Worksheets(1).Range("A1").Value = inputDate Then MsgBox "True" End If End If

enter image description here

您需要将它们转换为相同的数据类型。

{{1}}

答案 1 :(得分:0)

你的变量应该是 Dim MyValue As String

当我使用你的代码时

    Dim wbk As Workbook
    Dim MyValue As String
    MyValue = InputBox("Enter Date")
    Set wbk = Workbooks("TestMe.xlsm")
    If wbk.Worksheets(1).Range("A1").Value = MyValue Then    '<--- This is Evaluating to False
        MsgBox "True"
    End If

它会发现该值为真。