Calling Public Variables between diff Modules

J

J@Y

I declared a public variable "Lib" in Module1. I have a For loop in Module 1
using "Lib" :

For Lib = 1to 10

....(code) ...

Next

In the (code) section, I call Module2. When Module2 calls the Lib variable,
gives me the ambiguous variable error. Is this because the For statement
actually declares Lib as a procedural variable instead of using it as a
public variable?
 
C

Chip Pearson

As long as Lib is declared only in one module as a Public variable, you
should be able use it from any other procedure in any module. Make sure you
are not declaring it anywhere else. Also, "Lib" is a reserved word in VB
(used with the Declare statement). I would rename the variable to avoid
confusion.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting
www.cpearson.com
(email on the web site)
 
J

JMB

It sounds like a name conflict (perhaps Lib is declared more than once?).

Also- as Don suggests, I would not use a public variable as a control for a
For loop. Reason is if the second Sub modifies the variable it messes up
your For loop. Even if you try using parameter passing:


Public Lib As Long

Sub test()
For Lib = 1 To 10
Call Test2(Lib)
Next Lib
End Sub

Sub Test2(x As Long)
x = x + 1
Debug.Print Lib
End Sub


VBA, by default, passes parameters By Reference (ByRef). In the above
example, x is another name for Lib - so any change to x changes Lib. You can
pass By Value (ByVal) to avoid this, but I would avoid using referencing my
control variable in any other sub.
 

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

Top