Почему For Each over Range.Columns (1) не выполняет итерацию по ячейкам? - PullRequest
1 голос
/ 04 мая 2019

Я могу перебрать диапазон ячеек для работы с каждой ячейкой индивидуально, если диапазон указан по адресу:

Dim cell as Range
For Each cell In Range("A1:A10")
  debug.print cell.Address
Next cell

Дает ожидаемый результат:

$A$1
$A$2
... etc

Но когда я указываю столбец из коллекции Columns диапазона, итерация выполняется только один раз для всего столбца:

For Each cell In UsedRange.Columns(1)
    Debug.Print cell.Address
Next cell

Создает только один вывод с целым столбцом:

$A$1:$A$20

Разве UsedRange.Columns(1) не является Range объектом? Если нет, то что это ??

Я прочитал это обсуждение строк / столбцов как диапазонов и , это в Range против Range.Cells , но я все еще могу решить, как перебирать каждую ячейку в UsedRange.Columns(1).

1 Ответ

3 голосов
/ 04 мая 2019

Это потому, что Column сам по себе является отдельным объектом. Если вы перебираете столбцы, вы зацикливаете один столбец за раз. Чтобы перебрать все ячейки в столбце:

Dim cell as Range
For Each cell In UsedRange.Columns(1).Cells
  debug.print cell.Address
Next cell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...