View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Excel User[_2_] Excel User[_2_] is offline
external usenet poster
 
Posts: 25
Default Getting Defined Name from Cell

Dave,

That's perfect - thanks again!

"Dave Peterson" wrote in message
...
You could look for the "type" string in the name:

Option Explicit
Public Sub test()
Dim nmTest As Name
Dim rTest As Range
Dim sName As String

For Each nmTest In ActiveWorkbook.Names
With nmTest
If LCase(nmTest.Name) Like "*type*" Then
Set rTest = Nothing
On Error Resume Next
Set rTest = .RefersToRange
On Error GoTo 0
If Not rTest Is Nothing Then
If Not Intersect(rTest, ActiveCell) Is Nothing Then
sName = LCase(Mid(.Name, 2))
Exit For
End If
End If
End If
End With
Next nmTest

If Not sName = vbNullString Then
Select Case sName
Case Is = "type1": Call SubA
Case Is = "type2": Call SubB
Case Else: 'Do nothing
End Select
End If
End Sub

Sub SubA()
MsgBox "suba"
End Sub

Sub SubB()
MsgBox "subb"
End Sub


Excel User wrote:

Thanks,

But the range name picked up is the 'Print Area' not the actual named
range - strange?

Any ideas?

"JE McGimpsey" wrote in message
...
ONe way:

Public Sub test()
Dim nmTest As Name
Dim rTest As Range
Dim sName As String

For Each nmTest In ActiveWorkbook.Names
With nmTest
On Error Resume Next
Set rTest = .RefersToRange
On Error GoTo 0
If Not rTest Is Nothing Then
If Not Intersect(rTest, ActiveCell) Is Nothing Then
sName = LCase(Mid(.Name, 2))
Exit For
End If
End If
End With
Set rTest = Nothing
Next nmTest
If Not sName = vbNullString Then
Select Case sName
Case Is = "type1": Call SubA
Case Is = "type2": Call SubB
Case Else: 'Do nothing
End Select
End If
End Sub


In article ,
"Excel User" wrote:

Dave,

Just a quick question, I have changed the defined name so that type1
refers
to

=OSR!$BW$39,OSR!$CC$39,OSR!$CI$39,OSR!$CO$39,OSR!$ CU$39,OSR!$DA$39,OSR!$DG$39,
OSR!$DM$39

but now the named range does not pickup, I think this must be because
this
is a range not a cell - any ideas, I can if need change this but its
going
to be time consuming to go through all 600 cells changing the names

Thanks

"Dave Peterson" wrote in message
...
Option Explicit
Sub testme()

Dim myStr As String
myStr = ""
On Error Resume Next
myStr = ActiveCell.Name.Name
On Error GoTo 0

If LCase(myStr) Like LCase("?type*") Then
Select Case LCase(Mid(myStr, 2))
Case Is = "type1": Call SubA
Case Is = "type2": Call SubB
End Select
End If

End Sub

Sub SubA()
MsgBox "suba"
End Sub

Sub SubB()
MsgBox "subb"
End Sub


--

Dave Peterson