我是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
答案 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