【发布时间】:2015-04-29 22:43:00
【问题描述】:
我运行这组代码,它返回一个错误:
运行时错误“1004”无法获取 WorksheetFunction 类的 Vlookup 属性。
我已经在另一个子例程中有一个 vlookup。 这段代码有什么问题吗?我调试并且错误出现在那里的策略框中。
Sub LinkPolicyNum()
Dim r As Integer
Dim policynum As Variant
Dim lookup_num As Range
Dim policybox As Variant
r = ActiveCell.Row
'Row number of the Selected Cell
policynum = ActiveSheet.Cells(r, 3).Value
Set lookup_num = ThisWorkbook.Sheets("PolicyDetails").Range("a1:z5000")
policybox = Application.WorksheetFunction.VLookup(policynum, lookup_num, 3, False)
'to match the policy number to the policy details
MsgBox policynum
MsgBox policybox
End Sub
【问题讨论】:
-
找不到该值时会出现此错误。
-
代码有什么问题?政策详情表中有数据。 @GSerg
-
那么该数据的第一列不包含您当前在
policynum中拥有的内容。 -
避免该错误的最简单的错误控制(相当于工作表上的#N/A)是将这一行放在它上面
if cbool(application.countif(lookup_num.columns(1), policynum)) then _如果你想做的不仅仅是跳过它,你甚至可以写一个Else将错误发送到即时窗口或 msgbox。 -
我制作了一张虚拟纸,并复制了您的代码,代码运行良好。尝试将“PolicyDetails”表中的“A”列复制到“Active”表中的“C”列,然后运行代码以测试它是否有效。