Excel VBA – 当一系列后续checkbox全部打开时打开ActiveXcheckbox

所有-

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

我目前正在使用一系列checkbox在Excel中制作一个大的清单。 一些“主要checkbox”下面有一系列的checkbox(即小任务或组成另一项任务的步骤)。 我希望能够做的是主checkbox打开(成为选中),当所有的checkbox的子系列被选中。 有没有一个简单的VBA答案呢? 我确定有,但我似乎无法find它。

这是基本上如何设置:

主checkbox任务一

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

感谢大家提前对本文的所有帮助,因为我在几个简单命令之外使用Excel中的VBA相对比较新。

(编辑:8/28/2014)

如果我只是在这里提供代码,我觉得可能会更容易,因为我很难跟踪。 我目前设置的VBA旨在镜像checkbox点击。 基本上,如果在“新产品 – 产品开发”表上select了一个checkbox,则该select被镜像在“新产品概述”表上。 我想要发生的是,如果checkbox“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 

结束小组

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 

结束小组

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 

结束小组

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 

结束小组

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 

结束小组

请让我知道设置此代码的最佳方法,以便在后续checkbox全部打开时自动点击。

再次感谢您在这里的所有帮助,我很抱歉如果我错过了简单的修复(我可能是)。

即使你的第一个checkbox,点击这样的东西

ActiveSheet.CheckBox2.Enabled =不是ActiveSheet.CheckBox2.Enabled

在任何子程序之外定义一个variables(比如checkbox)。

 Dim boxesChecked = 0 

然后,在每个checkbox的子例程中,把这个:

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

在最后一个子checkbox中,放在这里:

 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 

我想这就是你要找的。