VBA

时间:2017-01-08 10:15:08

标签: vba combobox

我有一个简单的Excel用户表单,其中有3个组合框,其中有几个项供用户选择,"选项A","选项B","选项C&# 34;在每个盒子里。我想存储用户在任何框中选择的任何选项,然后从其他2个框中删除该项。如果用户更改了在任何框中选择的项目,我需要将该项目添加回可在其他2个框中选择的项目。为了开始,我尝试将每个框中选择的每个项目存储在"使用过的"变量然后根据用户选择添加回列表:我知道如何通过名称参考使用名称添加项目,例如"选项A",但要删除它们,我知道的唯一方法是引用它们的索引号,这是无用的,因为它会根据组合框列表中的项目数而变化。因此,如果从框中选择任何选项,则需要从其他2个框中删除该选项,并在该部分更改时添加回来。一旦用户在前两个框中选择了项目,最后一个框应该只有一个项目可供选择。我有:

With ComboBox1
    .AddItem "Option A"
    .AddItem "Option B"
    .AddItem "Option C"  

End With

ComboBox1.RemoveItem 1    'need to refer to item by name instead: remove "Option A" ?

请具体说明,因为我不是高级VBA用户。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以动态地为控件分配名称,然后use names rather than indexes to refer to those controls。 或者,您可以在代码中声明一个或多个变量,并在那里存储对那些组合框的引用(参见control arrays

我会强烈建议您不要动态删除控件 - disabling它们可以提供更好的用户体验。

如果你仍然希望它们消失,你可以alter their visibility property,再次避免删除。

此外,您似乎真的想要按特定顺序选择非重复元素。难道没有某种列表控件可以更好地满足这个目的吗?