如何用vba使得excel中插入的复选框CheckBox处于选中状态?

在excel工作表中,我们可以插入两种“复选框”。一种是表单复选框控件,另一种是ActiveX复选框CheckBox控件,分别如下图所示:

当退出设计模式后,单击鼠标都可以使得表单或者ActiveX复选框CheckBox控件处于打勾选中状态,如下图所示:

在实际的应用中,我们有时候需要根据条件判断达到选中或不选中某个复选框的目的,这时候就需要借助vba来实现。

接下来介绍在vba中选中表单或者ActiveX复选框CheckBox控件的方法。

一、用vba使得表单复选框控件处于打勾选中状态

在excel工作表中插入的表单控件,是隶属于Shapes集合对象的。

如果要设置表单复选框控件的选中状态,可以通过Shape对象的ControlFormat属性获取表单控件格式对象ControlFormat。然后通过设置ControlFormat对象的Value属性值来设置表单复选框控件的选中状态。

如下图所示,表单复选框的选中状态有3种,分别是”未选择”,“已选择”,“混合型”3种。

对应的ControlFormat对象的Value属性值也有3种,其中1表示选中,2表示混合型,0或者-4146表示未选择。

有了以上的知识,可以使用如下的vba代码将表单复选框控件选中:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Sheet1
    Dim objOLEObject As OLEObject
    Dim oSP As Shape
    With oWK
        Set oSP = .Shapes("复选框 1")
        With oSP.ControlFormat
            '未选中
           .Value = 0
           '选中
           .Value = 1
        End With
    End With
End Sub

二、用vba使得ActiveX复选框CheckBox控件处于打勾选中状态

对于ActiveX复选框CheckBox控件,要使得处于选中状态,也是一样,通过设置CheckBox对象的Value属性即可。Value属性值设置为0表示不选中,设置为1表示选中。

有了以上的知识,可以使用如下的vba代码将ActiveX复选框CheckBox控件选中:

Sub QQ1722187970()
    '不选中
     Sheet1.CheckBox1.Value = 0
    '选中
    Sheet1.CheckBox1.Value = 1
End Sub

注意上述代码是放在标准模块中的,所以需要在CheckBox1对象前添加它所处的工作表对象的CodeName,不然会报错,这也是直接调用不同工作表中的已知名字的ActiveX控件的一种技巧。

除了上述的直接调用以外,由于ActiveX控件隶属于OLEObjects集合对象,也可以使用如下的代码进行设置:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Sheet1
    Dim objOLEObject As OLEObject
    With oWK
        Set objOLEObject = .OLEObjects("CheckBox1")
        With objOLEObject
            '选中
            .Object.Value = 1
        End With
    End With
End Sub

以上就是用vba使得excel中插入的复选框CheckBox处于选中状态的所有方法。

想天天收到我的文章更新吗?欢迎关注我的个人公众号

 

 

       

发表评论