Selecting control on userform with part of control name (set question)

K

Keith

I have a select case statement, in which I determine which group of controls
("a", "b", "c", ..."j") I need to update (groups include radiobuttons,
checkboxes, etc.); e.g., group "a" includes cb_a, opt_a1T, opt_a1F, opt_a2T,
opt_A2F, etc.


Without looping through all controls (that would be a lot of extra
searching, with one full loop for each control) I'd like to be able to set
the control references dynamically, e.g.

Select Case
Case "Green"
Use_group = "a"
End Select

Set current_opt = "opt_" & Use_group & "1T" '<<<
current_opt.value = false

Can anyone point me to the correct syntax to directly select a control based
on control name?

Many thanks,
Keith
 
K

Keith

Another general update; I think I'm closer, but still no dice-

I have 10 textboxes on userform1 named E1, E2, E3, etc. I want the
textbox.text (E1.text, etc.) to reflect the contents of an array

For z = 1 To 10
CurrObj = "E" & CStr(z) 'control string name
UserForm1.Controls(CurrObj).Text = CStr(EdArray(ShortEd,
z))
Next

I get error 438, object doesn't support this property or method

This is one of several sets of controls I want to update, but if I can get
one working, I can probably work out the rest- I'm just having trouble with
the syntax...

Thanks,
Keith
 
K

Keith

Thanks Alok- I'll give it a try!
:)
Keith

Alok said:
This might help you..
Dim z%, CurrObj$, EdArray$(1 To 5)
Dim t As msforms.TextBox
Dim cnt As Control

EdArray(1) = "a"
EdArray(2) = "b"
EdArray(3) = "c"
EdArray(4) = "d"
EdArray(5) = "e"

For Each cnt In Controls
If TypeOf cnt Is msforms.TextBox Then
Set t = cnt
z = Mid$(cnt.Name, 2)
If Mid$(cnt.Name, 1) = "E" And z >= LBound(EdArray) And z <=
UBound(EdArray) Then
t.Text = CStr(EdArray(z))
End If
End If
Next cnt
 

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