Variable problem

  • Thread starter Thread starter TC
  • Start date Start date
T

TC

Can someone please tell me what I'm doing wrong?

If I use a variable vRngName and set it to NamedRng1 (the name of a
named range), this procedure runs fine.

Sub test()
Dim vRngName As String
vRngName = "NamedRng1"
Range(vRngName).Select
End Sub


Now if I split this into 2 procedures and put Public vRngName As
String at the top of the module and run the following, I get an error
on line 1 of the second procedure "Method 'Range' of object' _global'
failed"

Sub test()
Dim vRngName As String
vRngName = "NamedRng1"
Call test2
End Sub

Sub test2()
Range(vRngName).Select 'error is here
End Sub

Why does using 2 procedures cause this to fail?
Thanks for the help
 
The problem is that you're using the macro-level variable in test2, but
a local variable in test().

Delete the Dim statement in test().
 
Hi TC;

You have to pass the parameter to the second call.
Something like this;


Sub test()
Dim vRngName As String
vRngName = "NamedRng1"
Call test2 vRngName
End Sub

Sub test2(vRngName)
Range(vRngName).Select 'error is here
End Sub




Thanks,

Greg
 
Thanks Greg and JE.
Both of these solutions work. As a relative Excel newbie I assumed
posting a variable as Public at the top of a module simply allowed the
variable declared in a macro with the Dim statement to be used
globally.. I didn't realize it created 2 separate variables.
Occasionally I think I'm becoming an Excel expert but then the drugs
wear off and I'm back here for help.
Thanks again.
 

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