Checkbox from toolbox

A

Andy

Hi All

I have a worksheet that contains a number of checkboxes (all from the
Control toolbox rather than the forms toolbar.

I wish to have a button on the sheet which, when clicked, 'resets' all
of the checkboxes to unchecked.

Is there a quick and easy way of doing this?

Many thanks for your help on this.

Andy
 
L

Leith Ross

Hello Andy,

This will clear all the checkboxes it finds on the active worksheet,
regardless of their names. Copy this code and placce it in a VBA
module.


Code:
--------------------
Sub ClearAllCheckBoxes()

Dim ChkBoxId As String

ChkBoxId = "Forms.CheckBox.1"

With ActiveSheet
For I = 1 To .OLEObjects.Count
If .OLEObjects(I).ProgId = ChkBoxId Then
.OLEObjects(I).Object.Value = False
End If
Next I
End With

End Sub
 
A

Andy

Thank you Leith. Works perfectly.

Just to clarify and hopefully learn something in the process.

So the word OLEobjects refers to all control toolbox buttons, checkboxes
etc on the sheet.

So the code counts all the OLEObjects on the sheet. Using a for loop It
then checks each one to ensure it is a checkbox and then assigns the
value FALSE (unchecked).

Thanks again

Andy
 
L

Leith Ross

Hello Andy,

You are correct. The Control Toolbox controls are embedded objects o
the Worksheet, that's why they are referenced using OLEObject. Fo
those who don't know, OLE stands for Object Linking and Embedding.

The Object property allows you to access the properties of the embedde
object, in this case the value property of the checkbox. The valu
property when true displays the checkmark, and removes it when false.

Sincerely,
Leith Ros
 
D

Dave Peterson

And there are other ways to check.

Instead of:
If .OLEObjects(I).ProgId = ChkBoxId Then
I'd use:
If typeof .OLEObjects(I).object is msforms.checkbox then

I find it a bit more intuitive. (but it's pretty much dealer's choice.)
 
A

Andy

Thanks Leith and Dave

This sort of feedback, from both of you, I find very useful as it gives
me a chance to experiment and learn new ways of doing things, which
invariably leads to neater and less code.

Cheers

Andy
 

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