vba advanced

Forum home » Delegate support and help forum » Microsoft Excel VBA Training and help » VBA Advanced

VBA Advanced

resolvedResolved · Medium Priority · Version 2003

Richard has attended:
Excel VBA Advanced course

VBA Advanced

I have developed a userform which has a number of checkboxes (48), named checkbox1 to checkbox48. Is there any way these can be put into a collection of checkboxes, so if I need to do something to them, then can all be changed, or for example, every even one or every 12th one (they represent 4 years).

RE: VBA Advanced

Hi Richard, thanks for your query. There are a number ways you could do this, probably the most efficient would be to use an array, particularly if the check boxes already exist on the form. Here is a basic walkthrough of what I would do. Adapt as you see fit.

Declare the array at the top of the module as so:

Private chkArray(48) as Checkbox

Initialise it:

Set chkArray(0) = chkFirst
Set chkArray(1) = chkSecond
...
Set chkArray(48) = chkLast

...and then use it in this fashion:

Dim intLoop as Integer
Dim intCount as Integer
intCount = 0
For intLoop = 0 to 31
If chkArray(intLoop).Value = True Then
intCount = intCount + 1
End If
Next intLoop

MsgBox "Selected: " & intCount

You should then be able to adapt this select and deselect particular checkboxes, use "Step 2" to select every second one, and so on.

Hope this helps,

Anthony

Tue 21 Dec 2010: Automatically marked as resolved.

 

Training courses

 

Training information:

Welcome. Please choose your application (eg. Excel) and then post your question.

Our Microsoft Qualified trainers will then respond within 24 hours (working days).

Frequently Asked Questions
What does 'Resolved' mean?

Any suggestions, questions or comments? Please post in the Improve the forum thread.


 

Excel tip:

Stop Formula Returning A "#DIV/0" Error

If a formula returns a #DIV/0 error message there is a way to avoid such results.

For example the formula =A1/B1 will return a #DIV/0 if B1 is empty or a zero.

If you protect your formulas with the ISERROR function, the formula will then look like this:

=IF(ISERROR(A1/B1),0,A1/B1)

In plain English: should the result of A1 divided by B1 be an error change the result to 0 else show the result of A1/B1.

View all Excel hints and tips


Server loaded in 0.08 secs.