2014-08-27 79 views
1

清一色Excel的VBA - 打開的ActiveX複選框,這時的複選框的系列都被導通

第一張大字報,所以我提前道歉,如果我做了什麼錯在這裏,或(更可能)發佈一個非常簡單的題。

我目前正在使用一系列複選框在Excel中製作一個大型清單。一些「主複選框」下面有一系列複選框(即構成另一項任務的微型任務或步驟)。我希望能夠做的是在複選框的所有子複選框被選中時打開主複選框(被選中)。有沒有一個簡單的VBA答案來做到這一點?我確定有,但我似乎無法找到它。

這是它是如何基本建立:

主要複選框任務一

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

謝謝大家,提前給所有的援助,在這一個,因爲我是比較新在幾個簡單的命令之外在Excel中使用VBA。

(編輯:2014年8月28日)

我認爲這可能是更容易,如果我只是在這裏提供的代碼,因爲我有以下的困難時期。我目前設置的VBA旨在鏡像複選框點擊。基本上,如果在工作表「新產品 - 產品開發」中選擇了一個複選框,那麼該選擇會反映在「新產品概述」表上。我想要發生的是,如果選中「NPProdDevCB1」,「NPProdDevCB2」,「NPProdDevCB3」和「NPPRodDevCB4」複選框,則會自動單擊「NPProdDevMainCB」。

這是我已經設置了做板材之間的鏡像:

私人小組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 

末次

私人小組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

私人小組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 

結束子

私人小組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 

結束子

私人小組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

請讓我知道設置此代碼的最佳方式,以便在後續複選框全部打開時自動點擊。

再次感謝您在這裏的所有幫助,如果我錯過簡單修復(我可能是),我很抱歉。

回答

0

把像這樣的點擊,甚至爲你的第一個複選框

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

+0

是的,這並沒有真正的幫助。看起來這應該很容易,但我找不到任何地方的問題的直接答案,哈哈。非常感謝您的意見。 – 2014-08-27 11:56:34

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 

我認爲這是你在找什麼。

+0

嗯,謝謝你的幫助,但我無法得到這個工作。讓事情更加複雜的是,我已經有了所有複選框的點擊Private Private以將它們全部鏈接回主「概覽」頁面。也許我把你的答案放在錯誤的地方? – 2014-08-27 11:57:49

+0

是的,if語句應該進入複選框點擊的Private Subs。 – ServerS 2014-08-27 12:11:29

+0

如果我想使用已經在複選框中的VBA代碼,請單擊Private subs AS作爲此代碼,是否只是另一個if語句? – 2014-08-27 12:40:04