Excel VBA中的范围变量错误; “未设置对象变量或带块变量”

时间:2019-06-18 18:33:01

标签: excel vba object range runtime-error

我不知道为什么在尝试运行此代码时总是出现错误。在出现MsgBox之后出现错误,但是在错误框上单击“调试”后,Msgbox行被突出显示。我怀疑FirstLast范围变量存在问题。

我测试了变量ws和Criteria是否有效,并注释掉了该函数的其余部分以查找问题。我之前使用的是这段代码,没有问题,所以我不知道更改了什么。

Function TotalUniqueValues(ws As Worksheet, Criteria As String) As Integer
    Dim Last As Range, First As Range, rng As Range

    Set Last = ws.Cells.Find(What:=Criteria, _
        After:=Range("B1"), _
        LookAt:=xlPart, _
        LookIn:=xlValues, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlPrevious, _
        MatchCase:=False)

    Set First = ws.Cells.Find(What:=Criteria, _
        After:=Range("B1"), _
        LookAt:=xlPart, _
        LookIn:=xlValues, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=False)

    MsgBox Last.Address

    Set rng = Range(First, Last)
End Function

1 个答案:

答案 0 :(得分:0)

很可能从未设置过Last对象。 您可以通过在MsgBox Last.Address之前之前将该行放置在该行中进行测试

if Last is Nothing then stop