Combobox取决于checkbox

我已经能够改变Combobox的列表(或RowSource ),取决于是否使用下面的代码select了一个Optionbox:

 Private Sub optYes_Click() Options End Sub Private Sub optNo_Click() Options End Sub Private Sub Options() Select Case True Case optYes.Value = True cmb.Enabled = True cmb.RowSource = "=Options!A1:A4" Case optNo.Value = True cmb.Enabled = False End Select End Sub 

我想稍微修改一下,这样Combobox列表被限制在一组已经被选中的checkbox中。 所以如果我有10个checkbox表示不同的选项,用户只select其中的4个,那么只有这4个checkbox出现在Combobox中。

以下是我将如何做到这一点:

 Private Sub Algeria_Change() Options End Sub Private Sub Bangladesh_Change() Options End Sub Private Sub Canada_Change() Options End Sub Private Sub Denmark_Change() Options End Sub Private Sub Options() Dim names As Variant, name As Variant Dim old As String names = Array("Algeria", "Bangladesh", "Canada", "Denmark") old = cmb cmb.Clear cmb.Enabled = False For Each name In names If Me.Controls(name) Then cmb.AddItem Me.Controls(name).Caption cmb.Enabled = True If name = old Then cmb.SelText = old End If Next name End Sub 

如果您需要更多的checkbox,只需将名称添加到names并在更改时调用Options