【问题标题】:Vba Vlookup with date returns a type mismatch error带有日期的 Vba Vlookup 返回类型不匹配错误
【发布时间】:2015-03-04 15:46:46
【问题描述】:

我正在尝试在 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

我可以帮忙吗?谢谢

【问题讨论】:

    标签: excel vba date vlookup mismatch


    【解决方案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
    

    【讨论】:

    • 成功了!非常感谢!现在我必须将 ImpPag 值放入电子邮件正文中。我要打开另一个问题吗?我已经有非工作代码
    • 是的,一个新问题是最好的选择,因为它可以让搜索类似问题的人更容易找到它。
    【解决方案2】:

    试试这个。声明一个字符串和允许您具有“02-mar-15”格式的格式。在您当前的代码中,在您为 GIOV 赋值的行下方键入“Debug.Print 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
    

    【讨论】:

    • 感谢您的回答,但即使在您进行编辑后,我仍然收到类型不匹配错误...
    • “日期”列中的值是否存储为日期?
    • 是的,他们是......无论如何,它与下面的建议一起工作。感谢凯尔抽出宝贵时间!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    相关资源
    最近更新 更多