0
我想写一个循环,基于两个条件添加单元格到一个范围。程序级变量在循环中丢失值吗?
1)的细胞或者是向右或已在的范围内的小区的向下,
2)的单元是相同的颜色作为先前指定的颜色。
Sub DefineContiguousRegion()
Dim c As Range
Dim areNewCells As Boolean
Do
areNewCells = False
For Each c In CurrentRange
If (Intersect(CurrentRange, c.Offset(1)) Is Nothing) And c.Offset(1).Interior.ColorIndex = CurrentColor Then
areNewCells = True
CurrentRange = Union(CurrentRange, c.Offset(1))
End If
If (Intersect(CurrentRange, c.Offset(, 1)) Is Nothing) And c.Offset(, 1).Interior.ColorIndex = CurrentColor Then
areNewCells = True
CurrentRange = Union(CurrentRange, c.Offset(, 1))
End If
Next
Loop Until areNewCells = False
的问题是,可变areNewCells在的末端对于每一个环被重置为断章取义。所以即使条件从未被满足,即使该值从未被设置为真。
这是怎么发生的?我该如何解决它?
如果有人能想出一个更简单的方法来创建这个范围,那很好,但我真正想要的是更好地理解变量范围/生命期,因为这是一个学习项目,而不是时间敏感的工作相关。
您是否通过加强与在本地窗口观察'areNewCells'的价值? – Porcupine911
是的。我在Loop Until之前的“next”语句中有一个断点。一旦我到达“下一个”声明,本地窗口就会清除。 – Rubikkon
CurrentRange的定义在哪里? –