gpt4 book ai didi

vba - 使用 Vlookup 在 VBA 中查找日期时出现错误 2042

转载 作者:行者123 更新时间:2023-12-03 01:49:55 25 4
gpt4 key购买 nike

我正在尝试编写根据“TSDate”字段中输入的日期查找批处理 ID 的代码。

尝试在 VBA 中使用 Application.VLookup 函数时,我不断收到错误 2042:

'Timesheet Date

Private Sub TSdate_KeyDown(ByVal KeyCode As _
MSForms.ReturnInteger, ByVal shift As Integer)

Dim TimesheetDate As Date
Dim batch As Variant
Dim DRange As Range
Set DRange = Range("Table_PayPeriods")

If KeyCode = 13 Or KeyCode = 9 Then
TSDate.Value = Format(TSDate.Value, "dd-mmm-yy")
TimesheetDate = TSDate.Value
batch = Application.VLookup(TSDate.Value, DRange, 2, 0)
MsgBox (DRange(2, 2))
BatchID.Text = batch
End If
End Sub

消息框证明正在查找的数据正在正确提取,问题是我在“batch”变量中收到错误。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

Application.VLookup 当未找到查找值时,将返回 Error 2042

您需要测试错误,并进行适当的处​​理:

If KeyCode = 13 Or KeyCode = 9 Then
TSDate.Value = Format(TSDate.Value, "dd-mmm-yy")
TimesheetDate = TSDate.Value
batch = Application.VLookup(TSDate.Value, DRange, 2, 0)
If IsError(batch) Then
'Do something
Else
MsgBox (DRange(2, 2))
BatchID.Text = batch
End If

End If

至于为什么找不到该值,如果您没有提供有关输入数据和相应格式的更多详细信息,则无法回答 - 也许该值确实不存在,或者也许它似乎存在但实际上不存在:(通常我希望字符串与日期类型不匹配,反之亦然)。

如果单元格包含日期类型值(即使它们格式化看起来像字符串,也会出现错误。在这种情况下,将字符串输入 (TSDate.Value) 转换为 Date 类型,并将 that 转换为 Long 类型,并使用其等效的长数值执行 Vlookup:

batch = Application.VLookup(CLng(CDate(TSDate.Value)), DRange, 2, 0)

如果表中不存在日期值字面上,您仍然需要错误处理。

关于vba - 使用 Vlookup 在 VBA 中查找日期时出现错误 2042,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43349983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com