如何冻结ComboBox Excel VBA

我正在Excel VBA UserForm上编写脚本。 表单有三个不同的字段,用户可以填写ComboBox 。 我想使ComboBox 3的内容依赖于Combobox2input的内容。

ComboBox2被填充如下:

  With ComboBox2 .AddItem "Legal Information" .AddItem "Media" .AddItem "Official Disclosures" .AddItem "Patents and Trademarks" .AddItem "Private Corporate Information" .AddItem "Private Individual Information" .AddItem "Property Information" .AddItem "Public Company Information" .AddItem "Public Tenders" .AddItem "Ships, Vessels and Aircraft Information" .AddItem "Watchlists/Blacklists" End With 

根据用户在ComboBox2input的内容, ComboBox3由不同的选项填充。 我正在做如下:

 Private Sub ComboBox2_Change() Dim index As Integer index = ComboBox2.ListIndex ComboBox3.Clear Select Case index Case Is = 0 With ComboBox3 .AddItem "Administrative" .AddItem "Civil" .AddItem "Criminal" End With Case Is = 1 With ComboBox3 .AddItem "Arts and Culture" .AddItem "Blog/Social Media" .AddItem "Business and Economics" .AddItem "General News" .AddItem "Intelligence and Security" .AddItem "Official News Agency/Official Press" .AddItem "Energy" .AddItem "Pharmaceutical and Medical News" .AddItem "Politics" .AddItem "Religion" .AddItem "Society, Lifestyle and Opinion" .AddItem "Sport" End With End Sub 

我想要ComboBox3被冻结,也就是说,用户不可能填写,以防ComboBox2任何其他选项被选中 – 如果Case is = 2, 3, 4, 5, 6, 7, 8, 9, 10 。 我应该如何做到这一点。 谢谢。

使用combobox的“MatchRequired”,将其设置为TRUE,然后用户可以select或仅键入combobox中存在的项目。 没必要冻结它。

如注释中所述, ComboBox3被“冻结”, ComboBox3.Enabled = False 。 但是,为了避免用户“冻结” ComboBox ,然后在ComboBox2select另一个选项的情况下,需要在每个索引大小写之前插入一个ComboBox3.Enabled = True

正确的代码如下。

 Private Sub ComboBox2_Change() Dim index As Integer index = ComboBox2.ListIndex ComboBox3.Clear Select Case index Case Is = 0 ComboBox3.Enabled = True With ComboBox3 .AddItem "Administrative" .AddItem "Civil" .AddItem "Criminal" End With Case Is = 1 ComboBox3.Enabled = True With ComboBox3 .AddItem "Arts and Culture" .AddItem "Blog/Social Media" .AddItem "Business and Economics" .AddItem "General News" .AddItem "Intelligence and Security" .AddItem "Official News Agency/Official Press" .AddItem "Energy" .AddItem "Pharmaceutical and Medical News" .AddItem "Politics" .AddItem "Religion" .AddItem "Society, Lifestyle and Opinion" .AddItem "Sport" End With Case Is = 2 ComboBox3.Enabled = False Case Is = 3 ComboBox3.Enabled = False Case Is = 4 ComboBox3.Enabled = False Case Is = 5 ComboBox3.Enabled = False Case Is = 6 ComboBox3.Enabled = False Case Is = 7 ComboBox3.Enabled = False Case Is = 8 ComboBox3.Enabled = False Case Is = 9 ComboBox3.Enabled = False Case Is = 10 ComboBox3.Enabled = False End Select End Sub