vba - 在 VBA 中出现“无效的过程调用或参数”错误
问题描述
我是 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
解决方案
您的 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
或出现其他错误,则可以将错误值写入单元格,而不是中断您的宏。
您的代码隐含地引用了代码运行时恰好处于活动状态的任何工作表。尝试参考父工作簿和工作表(如果处于活动状态的工作表不是您认为的工作表)。
推荐阅读
- r - 由于 R 中的数据类型问题,无法过滤数据帧
- android - Android Xamarin 应用程序 - 如何在设备屏幕关闭然后重新打开时保持表单状态?
- python-3.x - 根据字典列表和特定日期条件替换列值 - 使用 if 和 for 循环 - Pandas
- flutter - 重新安排 Flutter 时,本地通知不会在新时间触发
- javascript - 如何使用云功能从我的 Firebase 实时数据库中的 database.ref 正在侦听的节点内部获取数据?
- javascript - 在命令行上关闭由`open`打开的窗口
- ios - 身份验证时如何设计选择SIM卡并在iOS中获取唯一ID?
- php - 在php中删除数组中的重复项
- c++ - 无法修改类复合数据成员
- python - buildozer 制作的 android 应用程序可以使用 glob 和 os 模块吗?