2013-03-08 79 views
1

我有一個電子表格,其中包含每個訂單項的複選框。我想在頂部放置一個複選框,當選中/取消選中時,將選中並取消選中電子表格中的所有其他複選框。以下是我目前使用的代碼,如果選擇了「複選框1」,將選中所有複選框,但如果取消選中它,則不會取消選中它們。如果取消選中「複選框1」,則需要添加哪些內容才能使這些框也取消選擇。謝謝你的幫助。複選框以選中並取消選擇電子表格中的所有其他複選框

Sub SelectAllCheckBox() 
Dim CB As CheckBox 
If ActiveSheet.CheckBoxes("Check Box 1").Value Then 
    For Each CB In ActiveSheet.CheckBoxes 
     If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name Then 
      CB.Value = True 
     End If 
    Next CB 
End If 
End Sub 

我也遇到了另一個問題。我有一個宏來清除表單,所以不同的宏可以運行。該宏具有代碼,可刪除所有複選框。我怎麼會說出代碼,使它不會刪除「複選框1」。這是我的代碼。

Sheets("Quote Sheet").Select 
Range("D3:D7").Select 
Selection.ClearContents 
Rows("11:1000").Select 
Selection.Delete Shift:=xlUp 
ActiveSheet.CheckBoxes.Delete 
Selection.FormatConditions.Delete 

我嘗試了以下,但它沒有奏效。

Sheets("Quote Sheet").Select 
Range("D3:D7").Select 
Selection.ClearContents 
Rows("11:1000").Select 
Selection.Delete Shift:=xlUp 
If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name Then  
ActiveSheet.CheckBoxes.Delete 
Selection.FormatConditions.Delete 

回答

3
Sub SelectAllCheckBox() 
    Dim CB As CheckBox 

    For Each CB In ActiveSheet.CheckBoxes 
     If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name Then 
      CB.Value = ActiveSheet.CheckBoxes("Check Box 1").Value 
     End If 
    Next CB 

End Sub 

第二部分:

Dim CB as CheckBox, n as long, x as long 

n = ActiveSheet.CheckBoxes.Count 

For x = n to 1 Step -1   
    Set CB = ActiveSheet.CheckBoxes(x) 
    If CB.Name <> "Check Box 1" Then CB.Delete 

Next x 
+0

感謝蒂姆,這完美地工作。我嘗試做這樣的事情,但不知道如何正確地說出來。 – 2013-03-08 19:31:15

+0

蒂姆,我發佈了上面的另一個問題,如果你有一個快速解決方案,這將不勝感激。我覺得我走在正確的軌道上,我只是不知道該怎麼說。 – 2013-03-08 20:44:53

+0

查看我的更新以瞭解第二個問題。 – 2013-03-08 20:50:23

相關問題