根据插入第一个组合框中的数字生成组合框

时间:2018-03-01 18:53:51

标签: excel excel-vba combobox logic vba

我正在做一个用户形式,在其中一个字段(比如说它的组合框1)中,要求用户提供失败次数,并且对于每次失败,他必须输入失败类型,部件数量和在另一个领域中的返工类型(每个故障填补3个字段)。如果可以根据失败的数量生成组合框,我想知道的是什么。例如:如果用户在故障区域中放置3,则应出现9个组合框,依此类推。

我还认为,也许另一种方法是让标准3组合框并在每次用户按下按钮时清除字段,并且计数器出现指示他正在填写哪个故障描述,但我也想知道这是怎么回事可以整合到整个用户表单中,该用户表单已经提交了"提交"按钮。

也许可能有另一个理由,我会非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我没有太多使用动态创建的标签的经验,但它们可能有助于创建您正在描述的布局。我建议在基本用户表单中,包含带有单个选项卡的tabstrip以及单个故障所需的3个组合框/文本框。 (你可以保持它不可见,直到" combobox1"有一个值,如果需要的话)然后使用组合框中的数字动态创建标签条上的附加标签:

Private Sub ComboBox_Change()
    'To remove previous tabs if combobox changed
    For i = 1 To TabStrip1.Tabs.Count - 1
        TabStrip1.Tabs.Remove(i)
    Next i

    'Adding additional tabs to tabstrip
    For i = 1 To ComboBox.Value - 1
        TabStrip1.Tabs.Add
    Next i
End Sub

可以使用TabStrip1.Value属性识别当前选中的标签。我认为更改事件由TabStrip1.Value更改排队。 当标签条发生变化时,您必须手动清除任何值(或填充它们之前填写​​但又想要再次查看的值)。

但是,由于您决定使用" index" (.value属性)您可以创建一个二维数组(根据组合框1的值修改它以校正行/列)并使用选项卡"索引"存储组合框值并检索用户切换回现有选项卡时的现有值。

也许可以考虑"锁定"组合框1因此不能意外改变值。这可以通过将变量初始化为可能为-1来实现,该变量在他们开始向事件添加infor之后被设置为组合框值。或者,不要删除任何标签页标签,只有在数字大于现有计数时才添加。 (如果你想让他们放入他们喜欢的任何价值,也许可以考虑使用文本框?)