错误91对象变量或未在范围上设置的块变量

时间:2014-07-20 08:28:16

标签: excel vba excel-vba duplicate-removal

我是VBA的新手,因为我试图编写一个宏来查找工作表中不同列中的重复项。我发现answer here很有帮助。然而,这只解决了一个列。因此,为了添加更多列,我按如下方式更改了代码

        Sub test()
    Dim iWarnColor As Integer
    Dim rng As Range
    Dim rngCell As Variant
    Dim iWarnColor1 As Integer
    Dim rnga As Range
    Dim rngCell1 As Variant


    Set rng = Range("A1:A17") ' area to check '
    iWarnColor = xlThemeColorAccent2

    For Each rngCell In rng.Cells
        vVal = rngCell.Text
        If (WorksheetFunction.CountIf(rng, vVal) = 1) Then
            rngCell.Interior.Pattern = xlNone
        Else
            rngCell.Interior.ColorIndex = iWarnColor
        End If
    Next rngCell

    Set rnga = Range("B1:B17") ' area to check '
    iWarnColor1 = xlThemeColorAccent3

    For Each rngCell1 In rnga.Cells
        vVal = rngCell1.Text
        If (WorksheetFunction.CountIf(rnga, vVal) = 1) Then
            rngCell1.Interior.Pattern = xlNone
        Else
            rngCell1.Interior.ColorIndex = iWarnColor1
        End If
    Next rngCell1
    End Sub

运行此代码我得到了     “运行时错误91:对象变量或未设置块变量”

它说错误在

For Each rngCell1 In rnga.Cells

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

我可以在Excel 2010中本地运行您的代码而不会出现任何错误,因此不确定问题到底是什么。

尝试将rngCell1的类型从Variant更改为Range,看看它是否有所不同。

作为旁注,vVal尚未Dim。只有在模块顶部添加Option Explicit时才会抱怨,因此在此处无关紧要。