Перейти к содержимому

VBA Excel. Выделенный диапазон ячеек

Узнать адрес выделенного диапазона ячеек на листе Excel с помощью кода VBA. Определить номера первой и последней строки выделенного диапазона. Свойство Address объекта Selection, метод Select объекта Range.

  1. Адрес выделенного диапазона
  2. Выделение ячеек и диапазонов
  3. Определение номеров первой и последней строки

Адрес выделенного диапазона

Для определения адреса выделенного диапазона ячеек в VBA Excel используется свойство Address объекта Selection.

Объект Selection - это совокупность всех выделенных ячеек на листе Excel. Это может быть одна ячейка, смежный или несмежный диапазон ячеек, представляющий совокупность смежных диапазонов. Если выделение состоит из несмежного диапазона, адреса смежных диапазонов, из которых он состоит, будут перечислены через запятую.

Public Sub Test_1()
MsgBox Selection.Address
End Sub

Скопируйте и запустите код на выполнение, в результате получите что-то вроде этого, зависящее от того, какие диапазоны вы выберите:

Информационное окно с адресом выделенного диапазона ячеек
Определение адреса несмежного диапазона ячеек

На практике мне не приходилось программно определять адреса выделенных диапазонов, так же как и задавать выделение ячеек из кода VBA Excel, которое будет рассмотрено далее.

Выделение ячеек и диапазонов

Выделить несмежный диапазон ячеек можно следующим образом:

Public Sub Test_2()
Range("B4:C7,E5:F7,D8").Select
End Sub

Как видно из примера, в адресной строке объекта Range перечисляются адреса смежных диапазонов, составляющих общий несмежный диапазон, через запятую. Выделение осуществляется методом Select объекта Range.

Определение номеров первой и последней строки

В отличие от отображения адреса выделенного диапазона и программного выделения ячеек на листе Excel с помощью кода VBA, определение номеров первой и последней строки выделенного смежного диапазона имеет для меня практическое значение. Я использую эту возможность для задания интервала циклу For...Next, использующемуся для обработки информации из указанных строк таблицы Excel, без заполнения дополнительных диалоговых окон.

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

Sub Test_3()
Dim i1 As Long, i2 As Long
i1 = Selection.Cells(1).Row
i2 = Selection.Cells(Selection.Cells.Count).Row
MsgBox "Первая строка: " & i1 & vbNewLine & "Последняя строка: " & i2
End Sub

Результат будет таким, зависит от выделенного диапазона:

Информационное окно с номерами первой и последней строки диапазона
Номера первой и последней строки выделенного смежного диапазона

Таким же образом можно вычислить и номера первого и последнего столбца выделенного диапазона, которые можно использовать для обработки информации по столбцам.

Я использовал определение номеров первой и последней строки по выделенному диапазону для формирования файла загрузки данных держателей дисконтных карт на сервис отправки СМС-сообщений. Оказалось, что базу данных клиентов заполнять в таблице Excel намного удобнее, чем на портале сервиса, а для загрузки в сервис достаточно сформировать несложный файл. Заполнил новые строки, выделил их по любому столбцу, нажал кнопочку и файл готов.