checkbox的全选和反选可以通过VBA来控制,这种设计常见于一些交互式报表,代码如下:
1.分成两个IF判断
Private Sub CheckBox1_Click() ‘checkbox为总控,通过点击它来实现全选或反选
Dim b3 As Integer
Dim i As Integer
Dim b1 As Range
If Sheets(1).CheckBox1.Value Then ’第一个IF判断为全选的条件时
b3 = Sheets(1).Range("h50").End(xlUp).Row ‘用来解决数据不连续的问题
For i = 2 To b3
Sheets(1).OLEObjects("CheckBox" & i).Object.Value = True
Next i
End If
If Sheets(1).CheckBox1.Value = False Then ’第一个IF判断为反选的条件时
b3 = Sheets(1).Range("h50").End(xlUp).Row
For i = 2 To b3
Sheets(1).OLEObjects("CheckBox" & i).Object.Value = False
Next i
End If
End Sub
2.让checkbox1和其余所有的复选框状态一致,其余代码同上,只改变for循环的部分,如下:
For i = 3 To 30 Sheets(1).OLEObjects("CheckBox" & i).Object.Value = Sheets(1).CheckBox1.Value ‘这样只要checkbox1为选中,循环体内的所有复选框都为选中,反之亦然
next i
3. 通过设置布尔值来进行判断
Dim f As Boolean ‘设置一个布尔值变量
f = Sheets(1).CheckBox1.Value ’将这个变量赋值给所有的checkbox,达到使它们时刻保 持相同状态的效果
For i = 3 To 30
Sheets(1).OLEObjects("CheckBox" & i).Object.Value = f
Next i