VBA为vlookup发出编译错误

时间:2017-08-17 17:25:02

标签: excel excel-vba vba

我有一个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

1 个答案:

答案 0 :(得分:2)

For Each需要Next(后者不能与For EachFor一起使用)。您需要在列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