Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi,
I have a row which contain a series of named ranges (atype1, atype2, atype3 ...... ztype1, ztype2, ztype3) What I trying to do is depending on the activecell name (actually the type part of the name typea, typeb, typc) run a function, e.g. if the activecell name = "type1" then run functiona, if the activecell name = "type2" then run functionb etc Is it possible to use the If Target.Address = "$A$100" Then If activecell name = "type1" then run functiona etc End If End If I tried using the activecell.range.name but this does not work? Any help is appreciated |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 Excel User wrote: Hi, I have a row which contain a series of named ranges (atype1, atype2, atype3 ..... ztype1, ztype2, ztype3) What I trying to do is depending on the activecell name (actually the type part of the name typea, typeb, typc) run a function, e.g. if the activecell name = "type1" then run functiona, if the activecell name = "type2" then run functionb etc Is it possible to use the If Target.Address = "$A$100" Then If activecell name = "type1" then run functiona etc End If End If I tried using the activecell.range.name but this does not work? Any help is appreciated -- Dave Peterson |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks Dave for the quick reply that works great!
"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 Excel User wrote: Hi, I have a row which contain a series of named ranges (atype1, atype2, atype3 ..... ztype1, ztype2, ztype3) What I trying to do is depending on the activecell name (actually the type part of the name typea, typeb, typc) run a function, e.g. if the activecell name = "type1" then run functiona, if the activecell name = "type2" then run functionb etc Is it possible to use the If Target.Address = "$A$100" Then If activecell name = "type1" then run functiona etc End If End If I tried using the activecell.range.name but this does not work? Any help is appreciated -- Dave Peterson |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 Excel User wrote: Hi, I have a row which contain a series of named ranges (atype1, atype2, atype3 ..... ztype1, ztype2, ztype3) What I trying to do is depending on the activecell name (actually the type part of the name typea, typeb, typc) run a function, e.g. if the activecell name = "type1" then run functiona, if the activecell name = "type2" then run functionb etc Is it possible to use the If Target.Address = "$A$100" Then If activecell name = "type1" then run functiona etc End If End If I tried using the activecell.range.name but this does not work? Any help is appreciated -- Dave Peterson |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Application-Defined or object defined error 1004 When ran on exel97 but not 2003 | Excel Programming | |||
Copying A Range of Cells From one Sheet to Another - Error Application Defined or Object Defined | Excel Programming | |||
Runtime error 1004- application defined or object defined erro | Excel Programming | |||
Runtime error 1004- application defined or object defined erro | Excel Programming | |||
Runtime error 1004- application defined or object defined erro | Excel Programming |