方法'范围'失败。 VBA

时间:2014-07-02 15:49:33

标签: excel vba methods range

Sub tester()

Dim total As Integer
Dim z As Integer

For z = 4 To 90

    If Not IsNull(Range("c" & z)) Then
        total = total + Application.WorksheetFunction.Index(Range("h2:h69171"), Application.WorksheetFunction.Match(Cells("c" & z) & Cells("A98").Value, Range("l2:l69171"), 1))
    End If

Next z

Range("b98").Value = total

End Sub

这段代码给了我一个"方法'范围'对象' _Global'失败" (在If ...行上)。有人可以帮我弄清楚原因吗?提前致谢

1 个答案:

答案 0 :(得分:2)

Sub tester()

    Dim total As Integer
    Dim z As Integer
    Dim wf As WorksheetFunction

    Set wf = Application.WorksheetFunction

    With Sheet1

        For z = 4 To 90
            If Not IsEmpty(.Cells(z, 3).Value) Then
                total = total + wf.Index(.Range("h2:h69171"), wf.Match(.Cells(z, 3).Value & .Cells(98, 1).Value, .Range("L2:L69171"), 1), 1)
            End If

        Next z

        .Range("b98").Value = total
    End With

End Sub

Cells采用行和列参数。并且最好为所有范围引用添加一个工作表 - 我使用With Block并使用句点启动范围引用来完成该工作。

此外,当您不向INDEX提供列参数时,它将返回整行。

我创建了一个wf变量,只是为了保持代码的简洁和可读性。