2015-08-26 96 views
2

我試圖構建一個Excel,用戶在開始時選擇一組複選框(在一個groupbox中),每個複選框將顯示一個新的複選框選項(列表框或groupbox,無論你認爲哪個更合適),然後根據他們的最終選擇,生成/顯示相關標籤供他們閱讀。選擇/取消選中GroupBox中的所有複選框

我很難得到一個選擇/取消全選按鈕。這是我到目前爲止所嘗試的,沒有太多的運氣。如果有人能幫助我,我會非常感激。

Sub Tickall() 

Dim CB As CheckBox 
Dim OB As OptionButton 
If ActiveSheet.OB.GroupBox.GroupBox1.CheckBoxes("Check Box 21").Value Then 
    For Each CB In ActiveSheet.OB.GroupBox1.GroupBox1.CheckBoxes 
     If CB.name <> ActiveSheet.OB.GroupBox1.CheckBoxes("Check Box 21").name Then 
      CB.Value = True 
     End If 
    Next CB 
End If 
End Sub 

回答

1

GroupBoxes不會出現有一個控件屬性爲每個。我可以看到確定CheckBox是否在GroupBox內的唯一方法是檢查它是否在物理上。我希望這不是正確的答案,有一些更優雅的方式,但這裏有一個例子反正

Public Sub TickAll() 

    Dim gb As GroupBox 
    Dim cb As CheckBox 
    Dim cbAll As CheckBox 

    Set gb = Sheet1.GroupBoxes(1) 
    Set cbAll = Sheet1.CheckBoxes("Check Box 6") 

    For Each cb In Sheet1.CheckBoxes 
     If IsInGroupBox(cb, gb) Then 
      cb.Value = cbAll.Value 
     End If 
    Next cb 

End Sub 

Public Function IsInGroupBox(ByRef cb As CheckBox, ByRef gb As GroupBox) 

    IsInGroupBox = cb.Top > gb.Top And _ 
     cb.Top < gb.Top + gb.Height And _ 
     cb.Left > gb.Left And _ 
     cb.Left < gb.Left + gb.Width 

End Function 
0

未經測試,但我相信這是你在找什麼

ActiveSheet.CheckBoxes.Value = xlOff 


ActiveSheet.CheckBoxes.Value = xlOn 
+0

如何限制這種效果只在組合框中的「所有」複選框是?我不想讓生成的複選框在第一個選項中選擇所有選項(反之亦然) – Cylen

+0

您是否說過例如您有三組複選框,並且選擇/取消選擇全部只應該影響其中一個組? – mrbungle

+0

所以複選框1有它的選項,顏色,數字和形狀, 複選框2有紅色黃綠色,複選框3有一個兩個三和複選框4有方形三角形的圓, 我希望每個人都有選擇選擇所有項目在每個複選框分開。從用戶所做的選擇中,將顯示適當的選項卡(例如,Red Circle One),並將其關閉,因此如果選擇全部選項,則可以取消選中全部選項 – Cylen

相關問題