带日期的Vba Vlookup返回类型不匹配错误

时间:2015-03-04 15:46:47

标签: excel vba date vlookup mismatch

我正在尝试在VBA中找到带有Vlookup函数的值,但我在msgbox行上遇到类型不匹配错误。

lookup_value明天是

这是代码

Sub FINDDATA()
Dim Giov As Date
Dim ImpPag As Variant

Giov = Format(Date + 1, "Short Date")
ImpPag = Application.VLookup(Giov, Range("A5:B9"), 2, False)
MsgBox ImpPag
End Sub

这是数组

date        value
05-mar-15   €1.000,00 
12-mar-15   €2.000,00 
19-mar-15   €3.000,00 
26-mar-15   €4.000,00

我可以帮忙吗?感谢

2 个答案:

答案 0 :(得分:1)

在Excel中,日期通常存储为数字,仅在格式设置中显示为字符串。您可以通过更改电子表格中日期单元格的数字格式来检查这一点。

在这种情况下,您查找的日期(05/03/2015)实际上存储为42068.如果您将Giov声明为Long数据类型,则可以将当前日期+ 1传递到查找中。我添加了一个msgbox,因此您可以在执行查找之前将存储的日期看作Long Integer:

Sub FINDDATA()
Dim Giov As Long
Dim ImpPag As Variant

Giov = Date + 1
MsgBox Giov
ImpPag = Application.VLookup(Giov, Range("A5:B9"), 2, False)
MsgBox ImpPag
End Sub

答案 1 :(得分:0)

试试这个。声明一个字符串和格式,允许你拥有" 02-mar-15"格式。在您当前的代码类型" Debug.Print Giov"在您为GIOV分配值的行下方。您将在即时窗口中看到GIOV =" 5/15/2015"或者那种风格的约会。

Sub FINDDATA()
Dim Giov As String
Dim ImpPag As Variant

Giov = Format(Date + 1, "dd-mmm-yy")
ImpPag = Application.VLookup(Giov, Range("A5:B9"), 2, False)
MsgBox ImpPag
End Sub