如果Statement在另一个工作簿上比较inputdate和date时不计算为True

我觉得我的问题可能有一个非常简单的解决scheme,但是对于我来说,我找不到它。 我有两个工作簿,在某些时候需要将用户input的date与工作表上的date进行比较。 我已经提出了一些非常简单的代码的问题。

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 

可以说我使用的date是1/1/2000。 如果我写Msgbox wbk.Worksheets(1).Range("A1")我会得到1/1/2000。 我input2000年1月1日到input框,所以为了所有的意图和目的,if语句应评估为真。

这是一个数据types问题。 浏览你的代码并观察每个值的数据types。 工作表中“范围”中的值是“ Date ,从input框中收到的值是一个string

在这里输入图像说明

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

 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 

你的variables应该是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 

它会发现值是真实的。