Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Sechsfach abhängige Comboboxen

Betrifft: Sechsfach abhängige Comboboxen von: bolleeee
Geschrieben am: 19.07.2013 10:02:20

Hallo,

ich mache parallel zu meiner anderen Frage noch dieses Problemchen von mir auf.

In der angehängten Datei ist eine Userform https://www.herber.de/bbs/user/86454.xlsm
, in welcher durch verschiedene Comboboxes letztendlich eine Strukturnummer (im Bsp. A) ausgegeben werden soll in die Textbox1. Die Combos beeinflussen sich selbstverständlich dafür.
1. Durch eure Hilfe hatte ich es schon einmal bis zur dritten Stufe funktionsfähig, aber mit sechs klappt es jetzt irgendwie nicht mehr. Auch wird das Ergebnis nicht mehr in der Textbox1 angezeigt.

2. Ich würde auch gern den umgekehrten Weg mit der Textbox2 und dem Button "Search" gehen. D.h. eine Nummer eingeben und dann die Combos dementsprechend füllen.

Ich hoffe ihr könnt mir helfen, ich glaube, dass ich bei 1. nur etwas übersehen habe.

Danke und Gruß

Bolleeee

  

Betrifft: AW: Sechsfach abhängige Comboboxen von: Rudi Maintaire
Geschrieben am: 19.07.2013 12:46:16

Hallo,
zu 1:

Option Explicit
Dim bolCode As Boolean, strID As String

Private Sub CommandButton2_Click()
  Unload Me
End Sub

Private Sub UserForm_initialize()
    Dim MyDic As Object, Zelle As Range
    Set MyDic = CreateObject("Scripting.Dictionary")
    With Worksheets("Tabelle1")
        For Each Zelle In .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
            MyDic(Zelle.Value) = Zelle.Value
        Next Zelle
    End With
    ComboBox1.List = MyDic.items
End Sub

Private Sub ComboBox1_Change()
  If Not bolCode Then
    bolCode = True
    ClearCombo 1
    ComboBox2.List = GetList(1)
    TextBox1 = strID
    bolCode = False
  End If
End Sub

Private Sub ComboBox2_Change()
  If Not bolCode Then
    bolCode = True
    ClearCombo 2
    ComboBox3.List = GetList(2)
    TextBox1 = strID
    bolCode = False
  End If
End Sub

Private Sub ComboBox3_Change()
  If Not bolCode Then
    bolCode = True
    ClearCombo 3
    ComboBox4.List = GetList(3)
    TextBox1 = strID
    bolCode = False
  End If
End Sub
    
Private Sub ComboBox4_Change()
  If Not bolCode Then
    bolCode = True
    ClearCombo 4
    ComboBox5.List = GetList(4)
    TextBox1 = strID
    bolCode = False
  End If
End Sub

Private Sub ComboBox5_Change()
  If Not bolCode Then
    bolCode = True
    ClearCombo 5
    ComboBox6.List = GetList(5)
    TextBox1 = strID
    bolCode = False
  End If
End Sub

Private Sub ComboBox6_Change()
  GetList (6)
  TextBox1 = strID
End Sub

Function GetList(iCombobox As Integer)
  Dim i As Integer, Zelle As Range, bolOK As Boolean, objList As Object
  Set objList = CreateObject("Scripting.Dictionary")
  strID = ""
  With Sheets("Tabelle1")
  For Each Zelle In .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
  bolOK = True
  For i = 1 To iCombobox
    bolOK = bolOK And CStr(Zelle.Offset(, i - 1)) = Controls("Combobox" & i)
  Next
  If bolOK Then
    objList(.Cells(Zelle.Row, iCombobox + 1).Value) = _
    .Cells(Zelle.Row, iCombobox + 1).Value
    If strID = "" Then strID = .Cells(Zelle.Row, 7)
  End If
  Next
  End With
  If objList.Count > 1 Then strID = ""
  GetList = objList.items
End Function

Sub ClearCombo(iCombobox As Integer)
  Dim i As Integer
  For i = iCombobox + 1 To 6
    Controls("ComboBox" & i).Clear
  Next
End Sub

Gruß
Rudi


  

Betrifft: AW: Sechsfach abhängige Comboboxen von: bolleeee
Geschrieben am: 19.07.2013 14:25:36

Funktioniert super, danke.

Die zweite Sache konnte ich selbst mithilfe einer Combobox klären.

Gruß
Bolleeee


 

Beiträge aus den Excel-Beispielen zum Thema "Sechsfach abhängige Comboboxen"