VBA Objects

K

Kevin

I need to take a string variable passed into a
subroutine, concatenate it with another string, and then
have this string represent an object name so I can
manipulate the Enabled and Value properties of the
already existing object.
 
G

Guest

Not a class assignment, a work necessity. I've never
studied VBA formally -- learning it on the fly. I have
named all related controls (on a UserForm) with the same
ending. For instance, if I have a label and check box
that go together, they will be named lblXXX and chkXXX.
What I am trying to do is to write a generic subroutine
that would allow me to pass the value of XXX into the
subroutine, and the sub would add the lbl and chk
prefixes to the string and then manipulate the Enabled
and Value properties of those controls. This would be
much more efficient than what I'm writing now --
individual subroutines for each group of controls.

Thanks
 
J

Jim Cone

Kevin,

Maybe something like the following...
'-------------------------------
Private Sub CheckBox1_Click()
ThisIsATest (CheckBox1.Name)
End Sub

Private Sub Label1_Click()
ThisIsATest (Label1.Name)
End Sub

Sub ThisIsATest(ByRef S As String)
MsgBox S
End Sub
'---------------------------------

Jim Cone
San Francisco, USA
 
D

Dave Peterson

I put this in a General module:

Option Explicit
Public myStr As String
Sub testme()
myStr = "xxx"
UserForm1.Show
End Sub


And this behind the userform1:

Option Explicit
Private Sub UserForm_Initialize()
Dim ctrl As Control
For Each ctrl In Me.Controls
With ctrl
If LCase(.Name) Like "*" & myStr Then
With ctrl
.Visible = True
.Enabled = False
End With
End If
End With
Next ctrl
End Sub
 
K

Kevin

Thanks - I'll give it a try!

Kevin
-----Original Message-----
I put this in a General module:

Option Explicit
Public myStr As String
Sub testme()
myStr = "xxx"
UserForm1.Show
End Sub


And this behind the userform1:

Option Explicit
Private Sub UserForm_Initialize()
Dim ctrl As Control
For Each ctrl In Me.Controls
With ctrl
If LCase(.Name) Like "*" & myStr Then
With ctrl
.Visible = True
.Enabled = False
End With
End If
End With
Next ctrl
End Sub
 
H

Harald Staff

If I understand your question right:

Private Sub CommandButton1_Click()
'set chcABCD.value to False, and
'set txtABCD.text to Yo da man:
Call Test("ABCD")
End Sub

Sub Test(sName As String)
UserForm1.Controls("chc" & sName).Value = False
UserForm1.Controls("txt" & sName).Text = "Yo da man"
End Sub

HTH. Best wishes Harald
 
K

Kevin

Yo ABSOLUTELY da man! This was exactly what I was looking
for.

Thanks for the help.

Kevin
 

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