【发布时间】:2016-01-10 22:37:43
【问题描述】:
这是an earlier post 的后续帖子。由于提供了一些很好的建议,这个问题得到了解决。
我正在帮助当地的动物收容所开发一个脚本,将四个工作表中的数据组合成一份整体报告。所有四张表都包含一个公共变量,我将其命名为 AnimalID。 AnimalID 位于 Rabies Renewal 和 Rabies Jurisdiction 表的 A 列中,从 min 到 max 排序。我之前的问题需要在狂犬病更新表上找到 AnimalID,并使用 VLookup 在报告表上复制到期日期。作为参考,日期填充在报告开头的单元格 Q8 到底部。我正在尝试使用(或者我认为)相同的方法通过在狂犬病管辖区表上查找 AnimalID 来填充报告表上的所有者信息。所有者信息应该从单元格 A140 开始填充(之前的单元格已经填充),因此我包含两个变量来标记位置。当我尝试运行脚本时,当它到达任何带注释的 VLookup 行时,我会收到以下错误。
错误:“对象'WorksheetFunction'的方法'VLookup'失败”
我不确定 A## 值是否会正确填充,但我认为其他值应该可以正常工作。想法和建议将不胜感激。谢谢!
Dim Ct As Long, lMaxRows As Long
Dim AnimalID As Range, Jurisdiction As Range, Renewal As Range
Worksheets("Rabies Renewal").Activate
Range("A:A").NumberFormat = "@"
Set Renewal = Sheets("Rabies Renewal").Range("A:K")
Worksheets("Rabies Jurisdiction").Activate
Range("A:AI").NumberFormat = "@"
Set Jurisdiction = Sheets("Rabies Jurisdiction").Range("A:AI")
Worksheets("Report").Activate
Range("Q:Q").NumberFormat = "@"
'Backfill owner information based on animal ID
lMaxRows = Cells(Rows.Count, "I").End(xlUp).Row
Range("L" & lMaxRows + 1).Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Ct = Selection.Count
For Ct = 1 To Ct
Set AnimalID = Range("Q" & Ct + lMaxRows)
'Range("A" & Ct + lMaxRows).Select
'ActiveCell.Value = WorksheetFunction.VLookup(AnimalID, Jurisdiction, 19 & ", " & 18, False)
'Range("C" & Ct + lMaxRows).Select
'ActiveCell.Value = WorksheetFunction.VLookup(AnimalID, Jurisdiction, 27, False)
'Range("E" & Ct + lMaxRows).Select
'ActiveCell.Value = WorksheetFunction.VLookup(AnimalID, Jurisdiction, 32, False)
'Range("F" & Ct + lMaxRows).Select
'ActiveCell.Value = WorksheetFunction.VLookup(AnimalID, Jurisdiction, 33, False)
'Range("G" & Ct + lMaxRows).Select
'ActiveCell.Value = WorksheetFunction.VLookup(AnimalID, Jurisdiction, 34, False)
'Range("I" & Ct + lMaxRows).Select
'ActiveCell.Value = WorksheetFunction.VLookup(AnimalID, Jurisdiction, 16, False)
'Range("J" & Ct + lMaxRows).Select
'ActiveCell.Value = WorksheetFunction.VLookup(AnimalID, Jurisdiction, 8, False)
'Range("K" & Ct + lMaxRows).Select
'ActiveCell.Value = WorksheetFunction.VLookup(AnimalID, Jurisdiction, 11, False)
On Error Resume Next
Next Ct
'Backfill rabies due dates based on animal ID
Range("Q8").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Ct = Selection.Count
For Ct = 1 To Ct
Set AnimalID = Range("Q" & Ct + 7)
Range("P" & Ct + 7).Select
ActiveCell.Value = WorksheetFunction.VLookup(AnimalID, Renewal, 11, False)
On Error Resume Next
Next Ct
MsgBox "Completed"
【问题讨论】: