我注意到,如果将 SpecialCells 方法应用于某个范围,然后对结果集合的元素进行索引,则返回的是原始范围的所有元素,而不是基于 SpecialCells 条件的新范围的所有元素。
Sub test()
Dim i As Range
Selection.SpecialCells(xlCellTypeConstants).Select
For Each i In Selection
Debug.Print i
Next
End Sub
例如,如果您基于由一个常量、一个公式和一个常量组成的范围运行上述代码,然后在“立即”窗口中检查选择的元素,您将获得以下值:1、2、3(见下图)。
但是,如果您遍历 Selection,则会返回值 1 和 3,正如预期的那样(再次参见下图)。有人知道为什么每次返回的值都不同吗?
答案1
在 B1:B3 中测试集合的情况:
1,2,3
。1 =2, 3
。1, =a1+a2, 3
。Sub TestofCollection() Dim Collection1 As Collection Dim n As Integer Dim x As Integer Set Collection1 = New Collection n = 1 On Error Resume Next For Each Cell In Range("B1:B3") Collection1.Add n, CStr(Cell.Value) n = n + 1 Next Cell On Error GoTo 0 For x = 1 To Collection1.Count Range("C" & x).Value = Collection1.Item(x) Next x End Sub