使用第一个ComboBox中的变量动态填充第二个Combobox

时间:2013-08-21 09:03:01

标签: excel vba combobox

我在Excel VBA中遇到了ComboBox的问题。任何帮助都非常感谢。 这就是我想要做的事情:

  • 在UserForm中,用户从名为“ComboBox_groesse”的第一个ComboBox中选择一个输入(带有固定RowSource的常规ComboBox。输入是数字)
  • 当点击名为“ComboBox_config_1”的第二个ComboBox的DropButton时,此ComboBox将使用NamedRange“KonfiRange_1_1”中的值填充,该值等于所选ComboBox_groesse.value的值
  • NamedRange位于包含2列的表中。第一列是带有数字的NamedRange,第二列带有文本。
  • 我希望通讯文本与第二个ComboBox一起出现,并且值等于ComboBox_groesse.value

我已经编写了下面的代码,但我得到一个空白的ComboBox_config_1。有人可以帮忙吗?提前谢谢!

 Private Sub ComboBox_config_1_DropButtonClick()

    Dim teil As Range

    For Each teil In Tabelle1.Range("KonfiRange_1_1")

    If teil.Value = ComboBox_groesse.Value Then

        With Me.ComboBox_config_1

        .AddItem teil.Value

        End With

    End If
    Next teil

1 个答案:

答案 0 :(得分:0)

我会将此操作放在ComboBox_groesse_Change事件中,如下所示:

Private Sub ComboBox_groesse_Change()

    Dim rngFound As Range
    Dim strFirst As String
    Dim strList As String

    Me.ComboBox_config_1.Clear
    If Me.ComboBox_groesse.ListIndex = -1 Then Exit Sub 'Nothing selected

    With Range("KonfiRange_1_1")
        Set rngFound = .Find(Me.ComboBox_groesse.Text, .Cells(.Cells.Count), xlValues, xlWhole)
        If Not rngFound Is Nothing Then
            strFirst = rngFound.Address
            Do
                strList = strList & "|" & rngFound.Offset(, 1).Text
                Set rngFound = .Find(Me.ComboBox_groesse.Text, rngFound, xlValues, xlWhole)
            Loop While rngFound.Address <> strFirst
        End If
    End With

    If Len(strList) > 0 Then Me.ComboBox_config_1.List = Split(Mid(strList, 2), "|")

    Set rngFound = Nothing

End Sub