Я заметил, что если вы применяете метод SpecialCells к диапазону, а затем индексируете элементы результирующей коллекции, то возвращаются все элементы исходного диапазона, а не нового диапазона, основанного на критериях SpecialCells.
Sub test()
Dim i As Range
Selection.SpecialCells(xlCellTypeConstants).Select
For Each i In Selection
Debug.Print i
Next
End Sub
Например, если вы запустите приведенный выше код на основе диапазона, состоящего из константы, за которой следует формула, а затем константа, а затем проверьте элементы Selection в окне Immediate, вы получите значения: 1, 2, 3 ( см. изображение ниже).
Однако, если вы выполняете итерацию в Selection, значения 1 и 3 возвращаются, как и ожидалось (опять же, см. Изображение ниже). Кто-нибудь знает, почему возвращаемые значения отличаются в каждом случае?