Страницы: 1
RSS
VBA: добавление в массив только заполненных ячеек из диапазона
 
Добрый день.

Заполняю двухмерный массив с размерностью 18x5.
Сперва хочу заполнить первый столбик массива.

Данные в файле-источнике идут не по порядку а с разрывами в виде пустых ячеек.
Я нахожу нужный диапазон, выбираю только заполненные ячейки (с помощью свойства
Код
SpecialCells(xlCellTypeConstants)
и пытаюсь передать именно их в массив, но данные передаются все по порядку, и пустые ячейки, и заполненные - то есть весь диапазон без разбора

При этом,код
Код
'For Each zCell In Range(LRfirst.Address, LRlast.Address).SpecialCells(xlCellTypeConstants).Cells
'zCell.Font.Color = vbGreen
'Next zCell
прекрасно выделяет зеленым только заполненные ячейки. То есть в данной конструкции из диапазона только заполненные ячейки получается вычленяются, а в других конструкциях почему-то нет

Прилагаю два файла: с макросом и источник.

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

Изменено: Равик - 07.04.2020 00:30:37
 
Делайте перебором, в котором будет проверка не пустой ячейки, счётчик и изменение размерности массива через Redim Preserve.
Изменено: Ungrateful - 07.04.2020 07:28:51
 
Равик, может так?
Код
Dim i As Long
i = LBound(ArrZakaz)
For Each zCell In Range(LRfirst.Address, LRlast.Address).SpecialCells(xlCellTypeConstants).Cells
    zCell.Font.Color = vbGreen
    ArrZakaz(i, 1) = zCell
    i = i + 1
Next zCell
 
msi2102,

ну как бы да, спасибо, работает.

Я читал, что For Each вообще не подходит для заполнения массива, и даже не пытался думать в эту сторону. :)


Не знаете, почему все же в цикле For Each  это :
Код
Range(LRfirst.Address, LRlast.Address).SpecialCells(xlCellTypeConstants).Cells
возвращает только ячейки с заданным свойством (заполненные) - как и должно быть, по идее,
а в других циклах указанное выражение возвращает все ячейки диапазона, игнорируя фильтр по SpecialCells(xlCellTypeConstants) ?
Такая полезная вещь, а не везде срабатывает.
Страницы: 1
Наверх