ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Referencing form controls with a loop (https://www.excelbanter.com/excel-programming/389529-referencing-form-controls-loop.html)

robotman

Referencing form controls with a loop
 
I have a form that has 12 identical lines (same label, button, field
etc.).

In normal VB, I can create each control as an array, ex.
frmMyForm.lblMyLabel(1).
So this works great for changing something for all the controls with a
loop:

For Myloop = 1 to 12
frmMyForm.btnMyButton(MyLoop).Enabled = False
Next MyLoop

In VBA, I have to independently name each control and reference them
each one by one:

frmMyForm.btnMybutton1.Enabled = False
frmMyForm.btnMybutton2.Enabled = False
...
frmMyForm.btnMybutton12.Enabled = False

Does anyone have a shortcut to reference multiple identical controls
with a loop in VBA?!

Thanks.

John


Dave

Referencing form controls with a loop
 
Try referring to the control on the form as frmWhatEver.control(x) where x is
and integer reference to the controls... you will have to figure a way to
find the buttons by referring to the name of control eg.
left(frmWhatEver.control(x).name , 3) = "btn" or something like that - don't
know if there is a way to see what the control typeis ..

Best



"robotman" wrote:

I have a form that has 12 identical lines (same label, button, field
etc.).

In normal VB, I can create each control as an array, ex.
frmMyForm.lblMyLabel(1).
So this works great for changing something for all the controls with a
loop:

For Myloop = 1 to 12
frmMyForm.btnMyButton(MyLoop).Enabled = False
Next MyLoop

In VBA, I have to independently name each control and reference them
each one by one:

frmMyForm.btnMybutton1.Enabled = False
frmMyForm.btnMybutton2.Enabled = False
...
frmMyForm.btnMybutton12.Enabled = False

Does anyone have a shortcut to reference multiple identical controls
with a loop in VBA?!

Thanks.

John



JLGWhiz

Referencing form controls with a loop
 
I'm not sure what you mean, but each type of control on a UserForm has an
index number that can be used in an array. Any collection can be used in an
array in VBA and controls are collections.

"robotman" wrote:

I have a form that has 12 identical lines (same label, button, field
etc.).

In normal VB, I can create each control as an array, ex.
frmMyForm.lblMyLabel(1).
So this works great for changing something for all the controls with a
loop:

For Myloop = 1 to 12
frmMyForm.btnMyButton(MyLoop).Enabled = False
Next MyLoop

In VBA, I have to independently name each control and reference them
each one by one:

frmMyForm.btnMybutton1.Enabled = False
frmMyForm.btnMybutton2.Enabled = False
...
frmMyForm.btnMybutton12.Enabled = False

Does anyone have a shortcut to reference multiple identical controls
with a loop in VBA?!

Thanks.

John




All times are GMT +1. The time now is 06:24 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com