Highlight Check box

H

Hank Hendrix

Is there a way to have a check box stand out by changing color, bold type,
or another way when it is checked.
I have many check boxes on a worksheet. I would like some of them to "stand
out" if selected.
Thanks
Hank
 
H

Harald Staff

Hi Hank

There are some useful events.Without using classes you'll have to code each
one separately:

Private Sub CheckBox1_GotFocus()
CheckBox1.BackColor = RGB(255, 50, 0)
CheckBox1.ForeColor = RGB(0, 0, 150)
CheckBox1.Font.Bold = True
End Sub

Private Sub CheckBox1_LostFocus()
CheckBox1.BackColor = RGB(255, 255, 255)
CheckBox1.ForeColor = RGB(0, 0, 0)
CheckBox1.Font.Bold = False
End Sub

Private Sub CheckBox1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CheckBox1.Activate
End Sub

Problem with controls directly onto worksheets is that you can't Tab between
them without coding that behavior.

HTH. Best wishes Harald
 
K

keepITcool

there's 2 types of checkboxes that can be inserted in a worksheet.

The first is inserted from Control Toolbox Tool (embedded CB)
The second one is inserted from Forms Toolbar (native CB)


The embedded (msforms.checkbox.1) control has many more properties and
settings than the native checkbox.

And coding it is easy: (in the sheet's code module..)

Private Sub CheckBox1_Change()
With Me.CheckBox1
.BackColor = IIf(.Value, vbWhite, vbRed)
End With
End Sub


BUT i'm not a fan of using (a lot of) embedded controls on a worksheet.
Clean your temp directory.
Open a file with 50 or so checkboxes
Now check your temp directory and you'll see why.


So let's see what we can do with a NATIVE checkbox...
You could assign a macro to it... when clicked runs and changes color.

use the application.caller to get the name..
and you'll need one macro only..

(again put this in the SHEET's code module)

Sub CheckBox_ChangeNative()
With Me.Shapes(Application.Caller).Fill.ForeColor
.SchemeColor = IIf(.SchemeColor = 10, 9, 10)
End With
End Sub



I'd go for the second approach..




keepITcool

< email : keepitcool chello nl (with @ and .) >
< homepage: http://members.chello.nl/keepitcool >
 
M

Martyn Wilson

I didn't do the
"use the application.caller to get the name.." bit, and
With the NATIVE checkboxes I Received a type-missmatch error for the
"With Me.Shapes(Application.Caller).Fill.ForeColor"
line. What am I doing wrong?
 
K

keepITcool

Your cheating :) your boxes are transparent...
when the fill aint visible.. it's no use changing the color :)

Sub CheckBox_ChangeNative()
With Me.Shapes(Application.Caller)
If .ControlFormat.Value = 1 Then
.Fill.ForeColor.SchemeColor = 10
.Fill.Visible = True
Set x = Me.Shapes(Application.Caller)
Else
.Fill.Visible = False
End If
End With
End Sub


keepITcool

< email : keepitcool chello nl (with @ and .) >
< homepage: http://members.chello.nl/keepitcool >
 
H

Hank Hendrix

Harald,
Thanks, that works great - except I would like the text to be bold = true if
checked and bold = false if it is unchecked.
With this code it stays bold even if I later uncheck it.
As you might can tell - I'm new to code writing.

Is there a way to write code to include check boxes in the workbook with the
text = "Action". My goal is to have the "Action" check boxes stand out from
all other check boxes. I have a 12 page workbook with several hundred
checks boxes.
Thanks again
Hank
 
M

Martyn Wilson

Thanks keepITcool,
Maybe I was rather sleepy while working on this...Sorry about that ;)
 
H

Harald Staff

Private Sub CheckBox1_Click()
CheckBox1.Font.Bold = CheckBox1.Value
End Sub

Private Sub CheckBox1_GotFocus()
CheckBox1.BackColor = RGB(255, 50, 0)
CheckBox1.ForeColor = RGB(0, 0, 150)
CheckBox1.Font.Bold = CheckBox1.Value
End Sub

Private Sub CheckBox1_LostFocus()
CheckBox1.BackColor = RGB(255, 255, 255)
CheckBox1.ForeColor = RGB(0, 0, 0)
CheckBox1.Font.Bold = CheckBox1.Value
End Sub

Private Sub CheckBox1_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CheckBox1.Activate
End Sub

HTH. Best wishes Harald
 
Top