Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Выделенный диапазон ячеек (адрес, выбор, строки)

    Определение адреса выделенного диапазона ячеек на листе Excel с помощью кода VBA. Определение номера первой и последней строки. Программное выделение диапазона.

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

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

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

    Смежный диапазон — прямоугольная область смежных (прилегающих друг к другу) ячеек.

    Несмежный диапазон — совокупность (коллекция) смежных диапазонов (прямоугольных областей смежных ячеек).

    Стоит отметить: несмотря на то, что в выделенном диапазоне может содержаться много ячеек, активной может быть только одна. Она представлена объектом ActiveCell. Для определения ее адреса в коде VBA Excel также используется свойство Address.

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

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

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

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

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

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

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

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

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

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

    Обратите внимание, что для несмежных диапазонов этот пример не работает.

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


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

    15 комментариев для “VBA Excel. Выделенный диапазон ячеек (адрес, выбор, строки)”

    1. Владимир

      Добрый день.
      Есть такой вопрос. Пытаюсь написать макрос, который бы в выделенных несмежных диапазонах (диапазон — это либо одна вся строка, либо несколько строк), вставлял указанное кол-во строк (через InputBox) внутри диапазона. С одним диапазоном проблем нет. Но стоит выделить более одного диапазона, как макрос работает неверно. Причину я знаю. При добавлении новых строк в первый диапазон, строки смещаются вниз, но выделение остается на месте. И получается, что уже выделен совершенно не тот диапазон, который я выделял изначально. Представляю, что надо как-то применить смещение (даже пытался), но так и добился нужного результата. Не подскажите, как можно эффективно решить эту проблему.

      1. Владимир

        Прошу прощения. Можно не отвечать, все-таки я добил этот вопрос. Нашел решение.

    2. Здравствуйте, помогите, пожалуйста, написать программу:
      В ячейки В3:С15 рабочего листа «Лист2» занести формулу «=54*10+146» и установить цвет фона красный

      1. Евгений

        Добрый день!

    3. Дмитрий

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

      1. Евгений

        Здравствуйте, Дмитрий!
        Могу предложить такой вариант:

    4. Дмитрий

      Добрый день!
      Имеем таблицу:
      1. столбцы таблицы — 1 строка название отдела (4-5 столбцов), 2 строка сотрудники (по 4-5 чел.). Сотрудники объединены под отделом.
      2. строки таблицы — функции отделов. Напротив каждой функции стоит отметка какому отделу и сотруднику это принадлежит. При примитивной задаче определения какая функция к какому отделу относится — выставляем фильтр по номеру отдела и получаем результат. Неудобство в том, что отделы и сотрудники не умещаются в ширину листа, а их фактические функции после фильтрации приходится искать на другом конце документа. то есть например, есть функции А,Б,В, есть отделы 1,2,3. При выборе всех функций — отдел 1 отражается рядом, а отдел 3 далеко от функций.
      Необходим макрос, чтобы при выборе определенного отдела показывались рядом его функции и это было в соседних ячейках.

    5. Александр

      Здравствуйте, Евгений!
      Я копирую с Лист1 на Лист2 строки, как сделать переход на новую строку в неактивном листе? (Лист2)
      Не делая его активным. Спасибо.

      1. Евгений

        Здравствуйте, Александр!
        Так, с помощью цикла, можно скопировать десять первых строк с Лист1 на Лист2:

    6. Здравствуйте! Как в последнюю свободную ячейку диапазона вставить формулу СУММ?

      1. Евгений

        Здравствуйте, Артем!
        Для столбца E код будет такой:

    7. Дмитрий

      Доброго времени суток!) Подскажите пожалуйста, как можно написать код через переменную для того, чтобы на каждом листе книги возле определённого столбца (допустим, "с") внизу, в свободной ячейке проставлялось слово "количество"?

      1. Евгений

        Здравствуйте, Дмитрий!
        Что должно быть в переменной? Слово "количество"?

        1. Дмитрий

          Переменной задать все рабочие листы книги, на каждом листе возле столбца "С"(в столбце "B"), в свободной ячейке проставлялось слово "количество".

          1. Евгений

    Обсуждение закрыто.