Excel VBA: методы получения списка всех именованных диапазонов

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

Метод 1. Перебор всех именованных диапазонов в ActiveWorkbook:

Sub GetNamedRanges()
    Dim rng As Name

    For Each rng In ActiveWorkbook.Names
        Debug.Print rng.Name
    Next rng
End Sub

Этот код перебирает все именованные диапазоны в активной книге и печатает их имена в окне интерпретации.

Метод 2. Использование коллекции Names определенного листа:

Sub GetNamedRangesWorksheet()
    Dim rng As Name
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets("Sheet1") ' Replace "Sheet1" with the desired sheet name

    For Each rng In ws.Names
        Debug.Print rng.Name
    Next rng
End Sub

Этот код перебирает все именованные диапазоны в «Листе1» книги и печатает их имена.

Метод 3. Получение именованных диапазонов из определенного диапазона:

Sub GetNamedRangesInRange()
    Dim rng As Range
    Dim nm As Name

    Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10") ' Replace "Sheet1" and "A1:B10" with the desired sheet and range

    For Each nm In rng.Parent.Names
        If Not Intersect(rng, nm.RefersToRange) Is Nothing Then
            Debug.Print nm.Name
        End If
    Next nm
End Sub

Этот код извлекает все именованные диапазоны, которые пересекаются с указанным диапазоном («A1:B10» в «Лист1»), и печатает их имена.