无法读取动态创建的组合框的选定值

时间:2017-09-21 12:07:39

标签: excel-vba vba excel

在这上面浪费太多时间...... 我创建了一个动态数量的组合框,如下所示:

Set MyComboBox = myForm.Designer.Controls.Add("Forms.ComboBox.1", Name:="Combobox_" & x)

With MyComboBox
    .Left = 100
    .Top = 20 + x * 30
    .Height = 16
    .Width = 100

    'add a few fields 
    For Each col In fields
        myForm.CodeModule.InsertLines myForm.CodeModule.CountOfLines + 1, "Me.Combobox_" & x & ".AddItem (""" & CStr(col) & """)"
    Next
End With

工作正常。最后我添加一个" OK"启动功能的按钮:

myForm.CodeModule.InsertLines myForm.CodeModule.CountOfLines + 1, "Private Sub cmd_1_Click()"
myForm.CodeModule.InsertLines myForm.CodeModule.CountOfLines + 1, "me.Hide"
myForm.CodeModule.InsertLines myForm.CodeModule.CountOfLines + 1, "Call BULK_DB_CHECK.Start_Check"
myForm.CodeModule.InsertLines myForm.CodeModule.CountOfLines + 1, "End Sub"

在这里我失败了:

Sub Start_Check()
UserForm2.Controls("Combobox_" & CStr(i)).ListIndex 'This is -1
UserForm2.Controls("Combobox_" & CStr(i)) 'This is "" 

我只想读出Combobox的选定值,这不在userform代码中,而是在模块中。这与列表有关,但与Combobox失败....感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在你提及的部分失败了,你永远不会定义i的价值。所以它试图找到“Combobox _”(因为i是空的)。如果我没有弄错的话,它至少从1开始。

我也不确定ComboboxComboBox之间的VBA是否存在差异,但我会使用ComboBox