Set Userform label text if form is not loaded???

R

Robert Crandal

My userform contains various text label controls which display
the contents of a row of cells. I achieve this with the following code:

Private Sub Worksheet_Change (ByVal Target As Range)
UserForm1.Label1.Caption = Sheet1.Range("A1").Value
UserForm1.Label2.Caption = Sheet1.Range("B1").Value
UserForm1.Label3.Caption = Sheet1.Range("C1").Value
' ....
' etc, etc...
End Sub


I was wondering, is it wise to run the above code even when
my userform is not loaded??? The code above seems to
work fine even when my form is NOT loaded, but I'm worried
that trying to set the text of a label that doesn't exist will
cause bugs later on.


thank you
 
R

Rick Rothstein

The reason you are not having any problems with your code is because as soon
as you reference a property or method of a UserForm, VB loads that UserForm
into memory (it doesn't show it... it just loads it). If you were to show
your UserForm after doing something to make the Change event fire, I am
pretty sure the UserForm will display with the Label control captions
already filled in.
 
R

Ryan H

As soon as you reference your userform the userform will then be loaded into
memory. It may or may not be a bad thing. I guess it depends on the size
(how much memory the form takes up) of the userform and how strong your
computer is (how much memory it has available). If your not really needing
your userform when your worksheet is changed, I would just put the code you
posted in the userforms Intialize Event. This way when your userform is
shown it will have all your controls set the way you want it.

Private Sub UserForm_Initialize()

Me.Label1.Caption = Sheet1.Range("A1").Value
Me.Label2.Caption = Sheet1.Range("B1").Value
Me.Label3.Caption = Sheet1.Range("C1").Value
' ....
' etc, etc...

End Sub
 
R

Ryan H

As soon as you reference your userform the userform will then be loaded into
memory. It may or may not be a bad thing. I guess it depends on the size
(how much memory the form takes up) of the userform and how strong your
computer is (how much memory it has available). If your not really needing
your userform when your worksheet is changed, I would just put the code you
posted in the userforms Intialize Event. This way when your userform is
shown it will have all your controls set the way you want it.

Private Sub UserForm_Initialize()

Me.Label1.Caption = Sheet1.Range("A1").Value
Me.Label2.Caption = Sheet1.Range("B1").Value
Me.Label3.Caption = Sheet1.Range("C1").Value
' ....
' etc, etc...

End 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