Thread: Dim statement
View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Patrick Molloy[_2_] Patrick Molloy[_2_] is offline
external usenet poster
 
Posts: 1,298
Default Dim statement

this is known as SCOPE. The DIM can be inside a SUB or in the genaral area of
the module ie at the very top. Since you neeed to use the variable in a
couple of subs, is scope is module, so


OPTION EXPLICIT
DIM rng as Range
Sub UserForm_Initialize()
Set rng = Cells(ActiveCell.Row, 1)
Call Module2.test
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
TextBox1.Value = rng(1, 4).Value

End Sub


IF your call to Module2.test also uses this variable, then the scope is
wider, so
PUBLIC rng As Range
would allow other code modules access to the variable.

Hope this is clear. Read up on variable scope


"Patrick C. Simonds" wrote:

A final attempt to demo what I want to do (if possible).

When UserForm1 displays I want to Set rng = Cells(ActiveCell.Row, 1) then
call Module2 .test to populate TextBox1.

My problem is not knowing where to place my Dim Statement (Dim rng as
Range). If I do it within the UserForm code then when Module2 code runs it
stops on rng and I get Sub or Function not defined error.

This is just a test piece of code. Ultimately after rng is set to
Cells(ActiveCell.Row, 1) there will be code which will find the next row in
the active worksheet which meets a set criteria and then it will set rng1
and so on until it has set rng9

Sub UserForm_Initialize()

Set rng = Cells(ActiveCell.Row, 1)

Call Module2.test

End Sub

'''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''

Sub test()

TextBox1.Value = rng(1, 4)

End Sub