How do I use VBA to find which named ranges a cell belongs to?

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I'm tring to find code which allows me to verify which named ranges any
single cell belongs to
 
Give this a try...

Sub test()
Dim nme As Name
Dim rng As Range

Set rng = Range("D4")

For Each nme In ThisWorkbook.Names
If Not Intersect(rng, nme.RefersToRange) Is Nothing Then MsgBox
nme.Name
Next nme
End Sub
 
To the OP
To avoid 1004 errors, you might add code check that the two ranges are on
the same worksheet before try to intersect them.

For example
Intersect(worksheets(1).Rows(1),worksheets(2).columns(1)).Address

raises a 1004 error.

Another approach is to error trap. Here is some code I posted back in
October 1999 (slightly modified) that demonstrates that approach:

Sub TestName()
Dim rng As Range
definedName as Name
On Error Resume Next
For Each definedName In ThisWorkbook.Names
Set rng = Nothing
Set rng = definedName.RefersToRange
If Not rng Is Nothing Then
If Not Intersect(rng, ActiveCell) Is Nothing Then
MsgBox ActiveCell.Address & " is in a range named: " & definedName.Name
End If
End If
Next
End Sub

This has the advantage that it accounts for defined names that are not
ranges as well. (a defined name does not have to refer to a range).
 
I think you need to add Dim (or the line wrapped)...

Dim definedName As Name

Otherwise it is better code in all respects.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top