我有一个vlookup VBA脚本,当我去运行它时,给我一个编译错误:下一个没有For。我搜索过这个网站和其他人,发现有类似问题的帖子,但似乎无法找到我的修复程序。
我的主要目标是在单元格T8:T50中向VLookup发票帐户,如果范围L8:L50为空白,则填写负责该帐户的人员的姓名。
Sub lookup()
Dim r As Range
Set r = Sheet1.Range("L8:L50")
If r = "" Then
Range("L8") = Application.WorksheetFunction.VLookup(Sheets("Sheet1").Range("T8:T50"), Sheets("Sheet3").Range("A:B"), 2, False)
End If
Next r
End Sub
答案 0 :(得分:2)
For Each
需要Next
(后者不能与For Each
或For
一起使用)。您需要在列L中的单元格范围内启动循环。使用Application.Vlookup
代替,因为它允许返回错误值而不将其提升到过程,然后您可以使用IsError
检查潜在错误并在工作表中添加一个占位符值。
Offset函数说“使用当前迭代器r
右边的单元格8列中的值”(在L列中),所以如果我的数学是正确的,L + 8 = T.
Dim val, r As Range
Dim lookupRange as Range, accountRange as Range
Set lookupRange = Sheets("Sheet3").Range("A:B")
Set accountRange = Sheets("Sheet1").Range("L8:L50")
For Each r in accountRange.Cells
If r.Value = "" Then
val = Application.VLookup(r.Offset(0,8).Value, lookupRange, 2, False)
If IsError(val) Then
r.Value = "Error!"
Else
r.Value = val
End If
End If
Next r