Как создать именованный диапазон с помощью vba?

Чтобы создать именованный диапазон с помощью VBA, необходимо дополнительно использовать свойство «Имена» с методом «Добавить». В методе add у вас есть аргументы, позволяющие определить, какое имя вы хотите дать диапазону, и указать адрес диапазона (обязательно используйте знак доллара рядом с адресом, чтобы заморозить диапазон).

Создайте диапазон имен с помощью VBA

  1. Определите книгу, в которой вы хотите создать именованный диапазон.
  2. Используйте свойство имен, затем добавьте дополнительный метод.
  3. Укажите имя в аргументе «Имя».
  4. Обратитесь к диапазону, используя аргумент «ReferTo».
создать диапазон имен с помощью vba

В приведенном выше примере у вас есть активная книга, затем с помощью свойства «Имена» и метода «Добавить» вы задаете имя диапазона и в конце адрес диапазона, который вы хотите использовать.

Как я уже говорил ранее, в диапазоне адресов нужно использовать знак $, чтобы заморозить адрес. Вы также можете использовать ThisWorkbook для ссылки на книгу, в которой вы пишете код , или вы можете использовать ссылку на другую книгу, используя объект рабочей книги.

VBA для создания именованного диапазона из выбора

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

 ActiveSheet.Names.Add Name:="myRangeName", RefersTo:=Selection

В следующем коде у вас есть окно сообщения , в котором вы можете ввести имя, которое хотите дать именованному диапазону.

 Sub vba_named_range() Dim iName As String iName = InputBox("Enter Name for the Selection.") ActiveSheet.Names.Add Name:=iName, RefersTo:=Selection End Sub

Изменение размера именованного диапазона с помощью VBA (динамический именованный диапазон)

Чтобы изменить размер именованного диапазона, который уже присутствует на листе, вы должны использовать свойство resize и указать VBA, сколько строк и столбцов вы хотите расширить из текущего диапазона. Рассмотрим следующий код, который расширяет диапазон с именем «myRange», который изначально имеет ячейку A1 в качестве диапазона, но изменяет его размер до столбца M и строки 11.

изменить размер именованного диапазона
 Sub vba_named_range() Dim iRow As Long Dim iColumn As Long iRow = ActiveSheet.Range("A1").End(xlDown).Row iColumn = ActiveSheet.Range("A1").End(xlToRight).Column ActiveSheet.Range("myRange") _ .Resize(iRow, iColumn).Name = "myRange" End Sub

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

разделен на три части
  • В ПЕРВОЙ части у вас объявлены переменные для хранения строк и количества столбцов.
  • Во ВТОРОЙ части вы использовали метод «END» с диапазоном, чтобы получить последнюю строку и столбец и сохранить их для переменных.
  • В ТРЕТЬЕЙ части вы использовали свойство Resize с диапазоном с именем «myRange». И после этого номер строки и столбца у вас в переменных.
переменные объявлены для хранения строк

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