2014-06-23 66 views
1

我是VBA的新手,在嘗試For Each循環時遇到此問題。我已經把我的頭包裹了很長時間,並且在這個論壇上找不到任何答案。對象執行For Each循環時所需的錯誤VBA

我懷疑這是一個愚蠢的錯誤,如果能得到一些幫助,我會很感激。非常感謝提前!

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 
+0

在這行你得到錯誤..? –

+0

我在這一行中得到一個錯誤:對於每個單元在rngAngle – user3766096

+1

我試着限定所有的範圍,例如在一個例子中它是'ActiveSheet.Columns(5)',在另一個它只是'Column5'。另外,請嘗試創建一個工作表變量,並在代碼的開頭將其設置爲「ActiveSheet」。這樣,如果另一張紙被激活,你的代碼仍然指向變量引用的工作表。 –

回答

0

Dim Cell as Range

和一個End if丟失,或者您必須將then placeholder = 1放置在同一行上。

for each cell循環之前,你可以添加if not rngAngle is nothing then

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