Worksheet.Columns
(или Worksheet.Columns(1)
) возвращает объект диапазона, который состоит из целых столбцов. Если вы хотите просмотреть отдельные ячейки этого столбца, вам нужно указать свойство .Cells
.
A Range Object представляет ячейку, строку, столбец, выборку ячеек, содержащих один или несколько непрерывных блоков ячеек, или трехмерный диапазон ".
Таким образом, в зависимости от того, что именно возвращается, определяется, через что проходит петля.
Например, здесь мы создаем объект диапазона, который состоит из трех столбцов:
Dim myRange As Range, myRangeObj As Range
Set myRange = Range(Columns(1), Columns(3))
For Each myRangeObj In myRange
Debug.Print myRangeObj.Address
Next myRangeObj
Выше вернется:
$A:$A
$B:$B
$C:$C
Но если вы измените «myRange» для ссылки на отдельные ячейки:
Set myRange = Range(Columns(1), Columns(3)).Cells
Тогда приведенное выше вернет адрес каждой ячейки в каждом из столбцов.
Сокращенный вывод
$A$1
$B$1
$C$1
$A$2
$B$2
$C$2
$A$3
$B$3
$C$3
$A$4
$B$4
$C$4
$A$5
$B$5
$C$5
$A$6
$B$6
$C$6
$A$7
$B$7
$C$7
$A$8
$B$8
$C$8
$A$9
$B$9
$C$9
$A$10
$B$10
$C$10
...