执行For Each循环VBA时出现对象所需的错误

时间:2014-06-23 04:31:44

标签: excel-vba vba excel

我是VBA的新手,在尝试For Each循环时遇到了这个问题。我已经把这个问题包围了很长一段时间,在这个论坛上找不到任何答案。

我怀疑这是一个愚蠢的错误,如果我能得到一些帮助,我会非常感激。非常感谢!

Sub AngleAndEComparison()

    Dim rngAngle As Range
    Dim Nrow As Integer
    Dim n#, placeholder#

    Nrow = 1
    n = 0
    Set rngAngle = Intersect(Columns(5), ActiveSheet.UsedRange)
    ' Set rngAngle = ActiveSheet.Columns(5)
    For Each cell In rngAngle
        If cell.Value <> "" Then
            If Range("E" & Nrow).Value > 75 And Range("E" & Nrow).Value < 105 Then 
                placeholder = 1
            If Range("G" & Nrow).Value >= 3 And placeholder = 1 Then
                    n = n + 1
                    cell.Interior.ColorIndex = 36
                    cell.Interior.ColorIndex = 36
                    placeholder = 0
            End If
            Nrow = Nrow + 1
        End If
    Next

    ActiveSheet.Cells(5, 11).Value = n
    ActiveSheet.Cells(5, 10).Value = "Elongated Cells within 15°:"
End Sub

2 个答案:

答案 0 :(得分:1)

在使用您使用函数设置的Range对象之前,应始终检查Range对象是否未设置为Nothing。在这种情况下,如果Intersect返回Nothing

,则代码将退出
Set rngAngle = Intersect(Columns(5), ActiveSheet.UsedRange)
' Set rngAngle = ActiveSheet.Columns(5)
If rngAngle Is not Nothing Then 
    Exit Sub

另外,其他人也注意到你遗失了End If

答案 1 :(得分:0)

Dim Cell as Range

缺少一个End if,或者您必须将then placeholder = 1放在同一行。

for each cell循环之前

,您可以添加if not rngAngle is nothing then