Excel VBA - 当一系列后续复选框全部打开时打开ActiveX复选框

时间:2014-08-27 11:08:07

标签: excel list vba checkbox

全部 -

第一张海报,所以如果我在这里做错了,或者(更有可能)发布一个非常简单的问题,我会提前道歉。

我目前正在Excel中使用一系列复选框制作一份大清单。一些"主要复选框"他们下面有一系列复选框(即组成另一项任务的迷你任务或步骤)。我想要做的是在选中所有子系列复选框时打开主复选框(变为选中状态)。这样做有简单的VBA答案吗?我确定有,但我似乎无法找到它。

这就是基本设置的方式:

主要复选框任务一

      Step One Check Box
      Step Two Check Box
      Step Three Check Box

提前感谢所有人对此提供的所有帮助,因为我在一些简单的命令之外使用Excel中的VBA相对较新。

(编辑:2014年8月28日)

我认为如果我在这里提供代码可能会更容易,因为我很难跟进。我目前设置的VBA旨在镜像复选框点击。基本上,如果在工作表"新产品 - 产品开发"上选择了一个复选框,则该选项将在工作表和#34;新产品概述"上进行镜像。我想要发生的是,如果复选框" NPProdDevCB1"," NPProdDevCB2"," NPProdDevCB3"和" NPPRodDevCB4"检查,然后" NPProdDevMainCB"自动点击。

这就是我设置的用于在工作表之间进行镜像的方法:

Private Sub NPProdDevMainCB_Click()

If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevMainCB = True Then
    ThisWorkbook.Sheets("New Product Overview").NPOCBA = True
Else
If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevMainCB = False Then
    ThisWorkbook.Sheets("New Product Overview").NPOCBA = False
End If
End If

End Sub

Private Sub NPProdDevCB1_Click()

If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevCB1 = True Then
    ThisWorkbook.Sheets("New Product Overview").NPOCB1 = True
Else
If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevCB1 = False Then
    ThisWorkbook.Sheets("New Product Overview").NPOCB1 = False
End If
End If

End Sub

Private Sub NPProdDevCB2_Click()

If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevCB2 = True Then
    ThisWorkbook.Sheets("New Product Overview").NPOCB2 = True
Else
If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevCB2 = False Then
    ThisWorkbook.Sheets("New Product Overview").NPOCB2 = False
End If
End If

End Sub

Private Sub NPProdDevCB3_Click()

If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevCB3 = True Then
    ThisWorkbook.Sheets("New Product Overview").NPOCB3 = True
Else
If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevCB3 = False Then
    ThisWorkbook.Sheets("New Product Overview").NPOCB3 = False
End If
End If

End Sub

Private Sub NPProdDevCB4_Click()

If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevCB4 = True Then
    ThisWorkbook.Sheets("New Product Overview").NPOCB4 = True
Else
If ThisWorkbook.Sheets("New Product - Prod Dev").NPProdDevCB4 = False Then
    ThisWorkbook.Sheets("New Product Overview").NPOCB4 = False
End If
End If

End Sub

请告知我设置此代码的最佳方法,以便在后续复选框全部开启时自动点击。

再次感谢您在这里的所有帮助,如果我错过了简单的解决方案,我会道歉(我可能是)。

2 个答案:

答案 0 :(得分:0)

即使是第一个复选框,也会点击这样的内容

ActiveSheet.CheckBox2.Enabled = Not ActiveSheet.CheckBox2.Enabled

答案 1 :(得分:0)

在任何子程序之外定义变量(例如复选框)。

Dim boxesChecked = 0

然后,在每个复选框的子程序中,输入:

if [sub checkbox name].value = true Then
    boxesChecked = boxesChecked + 1
else
    boxesChecked = boxesChecked - 1

在最后一个子复选框中,将其放在那里:

if [sub checkbox name].value = true Then
    boxesChecked = boxesChecked + 1
else
    boxesChecked = boxesChecked - 1

if boxesChecked = [number of sub checkboxes] Then
    [main checkbox name].value = true
else
    [main checkbox name].value = false

我认为这就是你要找的东西。