Возможно, что-то вроде следующего, который проверяет Intersection
ActiveCell
и каждого именованного диапазона.
On Error Resume Next
... On Error GoTo 0
необходим, так как Intersect
завершится неудачно, когда ActiveCell
и именованный диапазон находятся на разных листах, или если n
не является именованным диапазоном, но если он ссылается, например, на константу или формулу.
Sub test()
Dim n As Name
For Each n In ActiveWorkbook.Names
Dim rng As Range
Set rng = Nothing
On Error Resume Next
Set rng = Intersect(ActiveCell, n.RefersToRange)
On Error GoTo 0
If Not rng Is Nothing Then
Debug.Print n.Name
End If
Next
End Sub