Свойство CurrentRegion объекта Range, возвращающее в VBA Excel текущий прямоугольный диапазон ячеек, ограниченный пустыми строками и пустыми столбцами.
Свойство Range.CurrentRegion
Определение
Другими словами: границы возвращенного свойством Range.CurrentRegion диапазона определяются указанной ячейкой и смежными с ней и между собой непустыми ячейками. Смежными считаются, в том числе, и непустые ячейки по диагонали. Так как возвращается прямоугольный диапазон, он может включать в себя пустые ячейки, которые дополняют произвольный диапазон непустых ячеек до прямоугольного.
Синтаксис
1 |
Expression.CurrentRegion |
Expression — выражение (переменная), возвращающее объект Range, состоящий из одной ячейки. Если Expression возвращает диапазон, состоящий из двух и более ячеек, то для определения текущего диапазона используется первая ячейка возвращенного диапазона.
Примеры кода с CurrentRegion
Примеры кода VBA Excel со свойством Range.CurrentRegion будем демонстрировать на следующем диапазоне с заполненными и незаполненными ячейками:
Пример 1
Зависимость возвращенного диапазона (CurrentRegion) от указанной ячейки (диапазона):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub Test1() 'Классический вариант MsgBox Range("A1").CurrentRegion.Address 'Результат: $A$1:$F$6 MsgBox [D10].CurrentRegion.Address 'Результат: $D$10:$F$13 'Одна пустая ячейка, ограниченная пустыми строками и столбцами MsgBox Range("B8").CurrentRegion.Address 'Результат: $B$8 'Диапазон пустых ячеек, ограниченный пустыми строками и столбцами MsgBox Range("A8:B13").CurrentRegion.Address 'Результат: $A$8 'Еще одно доказательство, что только первая ячейка указанного диапазона 'задает границы диапазона, возвращаемого свойством CurrentRegion MsgBox Range("F1:F13").CurrentRegion.Address 'Результат: $F$1 'Заполненная ячейка является смежной по горизонтали к заданной пустой MsgBox Range("C5").CurrentRegion.Address 'Результат: $A$1:$F$6 'Заполненная ячейка является смежной по диагонали к заданной пустой MsgBox [C7].CurrentRegion.Address 'Результат: $A$1:$F$7 End Sub |
Обратите внимание, что результат выполнения последней строки кода до End Sub
— $A$1:$F$7
— содержит внизу пустую строку A7:F7
. Это строка, в которую входит изначально указанная ячейка C7
.
Пример 2
Присвоение ссылки на диапазон, возвращенный свойством Range.CurrentRegion, объектной переменной и извлечение некоторых свойств возвращенного диапазона:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Test2() Dim myCR As Range Set myCR = Range("D10").CurrentRegion With myCR 'Количество строк в диапазоне MsgBox .Rows.Count 'Результат: 4 'Количество столбцов в диапазоне MsgBox .Columns.Count 'Результат: 3 'Количество ячеек в диапазоне MsgBox .Cells.Count 'Результат: 12 'Номер строки рабочего листа, на которой 'находится последняя строка диапазона MsgBox .Cells(.Cells.Count).Row 'Результат: 13 End With End Sub |
Добрый день!
Подскажите, пожалуйста, у меня также есть таблица похожая на вашу. Но большая её часть заполнена формулами. Например в B7 вводим формулу
=ЕСЛИОШИБКА(A7;"")
. То есть там стоит""
, но в ячейке в результате выполнения формулы пусто. При этом код:Будет выдавать
$A$1:$F$7
А мне такого не надо. Как такое избежать?
Здравствуйте, Андрей!
Вам может подойти следующий код:
Обсуждение закрыто.