Проверить Ячейку на Пустоту Excel Vba • Работа со столбцами
Проверить Ячейку на Пустоту Excel Vba
Знакомство с объектной моделью Excel следует начинать с такого замечательного объекта, как Range . Поскольку любая ячейка — это Range , то без знания, как с этим объектом эффективно взаимодействовать, вам будет затруднительно программировать для Excel. Это очень ладно-скроенный объект. При некоторой сноровке вы найдёте его весьма удобным в эксплуатации.
Что такое объекты?
Объекты Range
Работа с отдельными ячейками
| Синтаксическая форма | Комментарии по использованию |
| Range (» D5 «) или [ D5 ] | Ячейка D5 текущего листа. Полная и краткая формы. Тут применим только синтаксис типа A1, но не R1C1. То есть такая конструкция Range (» R1C2 «) — вызовет ошибку, даже если в книге Excel включен режим формул R1C1. Разумеется после этой формы вы можете обратиться к свойствам соответствующей ячейки. Например, Range (» D5 «) .Interior.Color = RGB(0, 255, 0) . |
| Cells(5, 4) или Cells(5, «D») | Ячейка D5 текущего листа через свойство Cells . 5 — строка (row), 4 — столбец (column). Допустимость второй формы мало кому известна. |
| Cells(65540) | Ячейку D5 можно адресовать и через указание только одного параметра свойсва Cells . При этом нумерация идёт слева направо, потом сверху вниз. То есть сначала нумеруется вся строка (2^14=16384 колонок) и только потом идёт переход на следующую строку. То есть Cells(16385) вернёт вам ячейку A2 , а D5 будет Cells(65540) . Пока данный способ выглядит не очень удобным. |
Работа с диапазоном ячеек
| Синтаксическая форма | Комментарии по использованию |
| Range ( «A1:B4 «) или [ A1:B4 ] | Диапазон ячеек A1:B4 текущего листа. Обратите внимание, что указываются координаты верхнего левого и правого нижнего углов диапазона. Причём первый указываемый угол вполне может быть правым нижним, это не имеет значения. |
| Range(Cells(1, 1), Cells(4, 2)) | Диапазон ячеек A1:B4 текущего листа. Удобно, когда вы знаете именно цифровые координаты углов диапазона. |
Работа со строками
| Синтаксическая форма | Комментарии по использованию |
| Range (» 3:5 «) или [ 3:5 ] | Строки 3, 4 и 5 текущего листа целиком. |
| Range (» A3:XFD3 «) или [ A3:XFD3 ] | Строка 3, но с указанием колонок. Просто, чтобы вы понимали, что это тождественные формы. XFD — последняя колонка листа. |
| Rows (» 3:3 «) | Строка 3 через свойство Rows . Параметр в виде диапазона строк. Двоеточие — это символ диапазона. |
| Rows(3) | Тут параметр — индекс строки в массиве строк. Так можно сослаться только не конкретную строку. Обратите внимание, что в предыдущем примере параметр текстовая строка » 3:3 » и она взята в кавычки, а тут — чистое число. |
Работа со столбцами
| Синтаксическая форма | Комментарии по использованию |
| Range (» B:B «) или [ B:B ] | Колонка B текущего листа. |
| Range (» B1:B1048576 «) или [ B1:B1048576 ] | То же самое, но с указанием номеров строк, чтобы вы понимали, что это тождественные формы. 2^20=1048576 — максимальный номер строки на листе. |
| Columns (» B:B «) | То же самое через свойство Columns . Параметр — текстовая строка. |
| Columns(2) | То же самое. Параметр — числовой индекс столбца. «A» -> 1, «B» -> 2, и т.д. |
Весь лист
| Синтаксическая форма | Комментарии по использованию |
| Range (» A1:XFD1048576 «) или [ A1:XFD1048576 ] | Диапазон размером во всё адресное пространство листа Excel. Воспринимайте эту таблицу лишь как теорию — так работать с листами вам не придётся — слишком большое количество ячеек. Даже современные компьютеры не смогут помочь Excel быстро работать с такими массивами информации. Тут проблема больше даже в самом приложении. |
| Range (» 1:1048576 «) или [ 1:1048576 ] | То же самое, но через строки. |
| Range (» A:XFD «) или [ A:XFD ] | Аналогично — через адреса столбцов. |
| Cells | Свойство Cells включает в себя ВСЕ ячейки. |
| Rows | Все строки листа. |
| Columns | Все столбцы листа. |
Примеры кода
Скачать
Типовые задачи
Перебор ячеек в диапазоне (вариант 1)
Количество ячеек в диапазоне получено при помощи свойства .Count . Как .Item , так и .Count — это всё атрибуты коллекций, которые широко применяются в объектой модели MS Office и, в частности, Excel.
Перебор ячеек в диапазоне (вариант 3)
Если необходимо перебирать ячейки в порядке A1, A2, A3, B1, . а не A1, B1, C1, A2, . то вы можете это организовать при помощи 2-х циклов For . Обратите внимание, как мы узнали количество столбцов ( parRange.Columns.Count ) и строк ( parRange.Rows.Count ) в диапазоне, а также на использование свойства Cells . Тут Cells относится к листу и никак не связано с диапазоном parRange .
Перебор строк диапазона
В цикле For each. Next перебираем коллекцию Rows объекта parRange . Для каждой строки формируем цвет на основе первых трёх ячеек каждой строки. Поскульку у нас в ячейках формула, присваивающая ячейке случайное число от 1 до 255, то цвета получаются всегда разные. Оператор With позволяет нам сократить код и, к примеру, вместо Line.Cells(2) написать просто .Cells(2) .
Перебор столбцов
Перебираем коллекцию Columns . Тоже используем оператор With . В последней ячейке каждого столбца у нас хранится размер шрифта для всей колонки, который мы и применяем к свойству Line.Font.Size .
Перебор областей диапазона

Как проверить пустой массив в макросе vba
Ну а теперь организуем цикл, который будет проходить по всем областям. Заодно посчитаем количество ячеек, столбцов, строк. Определим является ли выделение смешанным (например выделен столбец и еще ограниченная область ячеек).
| Синтаксическая форма | Комментарии по использованию |
| Range (» 3:5 «) или [ 3:5 ] | Строки 3, 4 и 5 текущего листа целиком. |
| Range (» A3:XFD3 «) или [ A3:XFD3 ] | Строка 3, но с указанием колонок. Просто, чтобы вы понимали, что это тождественные формы. XFD — последняя колонка листа. |
| Rows (» 3:3 «) | Строка 3 через свойство Rows . Параметр в виде диапазона строк. Двоеточие — это символ диапазона. |
| Rows(3) | Тут параметр — индекс строки в массиве строк. Так можно сослаться только не конкретную строку. Обратите внимание, что в предыдущем примере параметр текстовая строка » 3:3 » и она взята в кавычки, а тут — чистое число. |




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