【问题标题】:Getting Error of "Invalid procedure call or argument" at VBA在 VBA 中出现“无效的过程调用或参数”错误
【发布时间】:2019-09-11 01:30:45
【问题描述】:

我是 vba 新手,遇到了一些问题。

我想从另一个工作表中查找某些内容并将匹配值复制到另一个单元格

VBA 说这是最后一个有问题的代码。

Private Sub ReferenceOk_Click()

Dim nextRefRec As Integer
Dim i As Integer
Dim ListNo As Integer

ListNo = ListBoxBook.ListIndex
If ListNo < 0 Then
    MsgBox "Please select any book"
    Exit Sub
End If


Sheets("Rental History").Activate
nextRefRec = Cells(Rows.Count, 2).End(xlUp).Row + 1
For i = 0 To 1
    Cells(nextRefRec, i + 3).Value = ListBoxBook.List(ListNo, i)
Next i
Cells(nextRefRec, 3).NumberFormat = "0000"
Cells(nextRefRec, 2).NumberFormat = "00000"
Cells(nextRefRec, 2).Value = TxtMemberNo.Value
Cells(nextRefRec, 5).Value = Date
Cells(nextRefRec, 6).Value = Date + TxtRentalDays.Value
Cells(nextRefRec, 7).Value = Application.WorksheetFunction.VLookup(Worksheets("Rental History").Cells(nextRefRec, 4), Worksheets("Book List").Cells("B4:C24"), 6, False)

End Sub

【问题讨论】:

标签: vba vlookup userform


【解决方案1】:

您的 VLOOKUP 公式:

VLookup(Worksheets("Rental History").Cells(nextRefRec, 4), Worksheets("Book List").Cells("B4:C24"), 6, False)

似乎无效。

Worksheets("Book List").Cells("B4:C24") 范围包含 2 列,但您的第三个参数是 6。换句话说,您正在尝试获取 2 列范围的第 6 列(显然不存在)。所以目前它可能会返回一个#REF 错误。

如果需要,请在VLOOKUP 上获取更多信息:https://support.office.com/en-us/article/vlookup-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1

修正您的 VLOOKUP 公式,以便您传递的列至少存在于您作为第二个参数传递的范围内。


另外,我建议将这些变量声明为Long 类型(以防止类型溢出错误):

Dim nextRefRec As Integer
Dim i As Integer
Dim ListNo As Integer

并改变这一行:

Cells(nextRefRec, 7).Value = Application.WorksheetFunction.VLookup(Worksheets("Rental History").Cells(nextRefRec, 4), Worksheets("Book List").Cells("B4:C24"), 6, False)

对此(除了如上所述修复您的VLOOKUP 参数):

Cells(nextRefRec, 7).Value = Application.VLookup(Worksheets("Rental History").Cells(nextRefRec, 4), Worksheets("Book List").Cells("B4:C24"), 6, False)

这样如果VLOOKUP 返回#N/A 或其他错误,则可以将错误值写入单元格而不是中断您的宏。

您的代码隐含地引用了代码运行时恰好处于活动状态的任何工作表。尝试参考父工作簿和工作表(如果处于活动状态的工作表不是您认为的那个)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    相关资源
    最近更新 更多