Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Диапазоны легче идентифицировать по имени, чем с помощью нотации A1. Чтобы присвоить имя выбранному диапазону, щелкните поле имени с левой стороны строки формул, введите имя и нажмите клавишу ВВОД.
Примечание Существует два типа именованных диапазонов: именованный диапазон книги и именованный диапазон для таблицы.
Именованный диапазон книги
Именованный диапазон книги относится к определенному диапазону в любом месте книги (применяется глобально).
Как создать именованный диапазон книги:
Как указано выше, обычно он создается путем ввода имени в поле "Имя" с левой стороны строки формул. Обратите внимание, что имя не может содержать пробелов.
Именованный диапазон определенного листа
Именованный диапазон определенного листа относится к диапазону конкретного листа и не является глобальным для всех листов в книге. Ссылайтесь на этот именованный диапазон только по имени на том же листе, но на другом листе необходимо использовать имя листа, включая "!", имя диапазона (например: "Имя" "=Лист1! Имя").
Преимущество заключается в возможности использования кода VBA для создания новых листов с одинаковыми именами для одних и тех же диапазонов на этих листах без возникновения ошибки, сообщающей, что имя уже используется.
Как создать именованный диапазон определенного листа:
- Выделите диапазон, которому нужно присвоить имя.
- Перейдите на вкладку "Формулы" на ленте Excel в верхней части окна.
- Нажмите кнопку "Присвоить имя" на вкладке формул.
- В диалоговом окне "Создание имени" в поле "Область" выберите конкретный лист, где расположен диапазон, которому нужно присвоить имя (например, "Лист1"), чтобы связать имя с этим листом. Если выбрать вариант "Книга", это будет имя книги.
Пример из worksheet Specific Именованный диапазон: выбранный диапазон для имени A1:A10
Выбранное имя диапазона — "Имя". В пределах одного листа ссылайтесь на именованный диапазон, просто введя в ячейку "=Имя". Из другого листа ссылайтесь на диапазон определенного листа, указав в ячейке имя листа: "= Лист1!Имя".
Ссылка на именованный диапазон
В следующем примере выполняется ссылка на диапазон с именем MyRange в книге с именем MyBook.xls.
Sub FormatRange()
Range("MyBook.xls!MyRange").Font.Italic = True
End Sub
В следующем примере выполняется ссылка на диапазон определенного листа с именем Sheet1!Sales в книге с именем Report.xls.
Sub FormatSales()
Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin
End Sub
Чтобы выбрать именованный диапазон, используйте метод GoTo, который активирует книгу и лист, а затем выбирает диапазон.
Sub ClearRange()
Application.Goto Reference:="MyBook.xls!MyRange"
Selection.ClearContents
End Sub
В следующем примере показано, как можно написать эту же процедуру для активной книги.
Sub ClearRange()
Application.Goto Reference:="MyRange"
Selection.ClearContents
End Sub
Пример кода предоставил: Деннис Валлентин VSTO & .NET & Excel
В этом примере в качестве формулы для проверки данных используется именованный диапазон. В этом примере данные проверки должны быть на листе 2 в диапазоне A2:A100. Они используются для проверки данных, введенных на листе 1 в диапазоне D2:D10.
Sub Add_Data_Validation_From_Other_Worksheet()
'The current Excel workbook and worksheet, a range to define the data to be validated, and the target range
'to place the data in.
Dim wbBook As Workbook
Dim wsTarget As Worksheet
Dim wsSource As Worksheet
Dim rnTarget As Range
Dim rnSource As Range
'Initialize the Excel objects and delete any artifacts from the last time the macro was run.
Set wbBook = ThisWorkbook
With wbBook
Set wsSource = .Worksheets("Sheet2")
Set wsTarget = .Worksheets("Sheet1")
On Error Resume Next
.Names("Source").Delete
On Error GoTo 0
End With
'On the source worksheet, create a range in column A of up to 98 cells long, and name it "Source".
With wsSource
.Range(.Range("A2"), .Range("A100").End(xlUp)).Name = "Source"
End With
'On the target worksheet, create a range 8 cells long in column D.
Set rnTarget = wsTarget.Range("D2:D10")
'Clear out any artifacts from previous macro runs, then set up the target range with the validation data.
With rnTarget
.ClearContents
With .Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Formula1:="=Source"
'Set up the Error dialog with the appropriate title and message
.ErrorTitle = "Value Error"
.ErrorMessage = "You can only choose from the list."
End With
End With
End Sub
Циклический переход по ячейкам в именованном диапазоне
В приведенном ниже примере выполняется циклический переход по каждой ячейке именованного диапазона с помощью цикла For Each...Next. Если значение любой ячейки в диапазоне превышает значение Limit
, цвет ячейки изменяется на желтый.
Sub ApplyColor()
Const Limit As Integer = 25
For Each c In Range("MyRange")
If c.Value > Limit Then
c.Interior.ColorIndex = 27
End If
Next c
End Sub
Об участнике
Деннис Валлентин (Dennis Wallentin) — автор блога VSTO & .NET & Excel, посвященного решениям .NET Framework для Excel и службам Excel. Деннис разрабатывает решения Excel более 20 лет и также является соавтором книги "Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA, and .NET (2nd Edition)".
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.