Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Abhängige Combobox mit verweis auf anderes Blatt

Abhängige Combobox mit verweis auf anderes Blatt
17.05.2016 23:27:28
Marco
Halli Hallo,
ich habe wieder eine Frage bezüglich Combobox. Per Button öffne ich ein Userform. In dem kann ich in der ersten Combobox den Standort auswählen. Im der zweiten Combobox stehen jetzt nur noch Artikel drin die von der ersten Box abhängen. Das scheint zu funktionieren. Wenn ich jetzt auf meinen Okay Button clicke soll ein neues UserForm geöffnet werden in dem alle Details zum Artikel drin stehen. Leider werden mir im zweiten UserForm nur Werte wiedergegeben die in der ersten Zeile drin stehen und unabhängig von den Ausgewählten Typen aus der Combobox sind. woran kann das liegen?
Das ist der Code vom 1. UserForm
Option Explicit
'Modulweite Variablen deklarieren.
Const C_mstrDatenblatt As String = "Database"
Const C_mstrZielblatt As String = "Dashboard"
Dim mobjDic As Object
Dim mlngLast As Long
Dim mlngZ As Long
Private Sub ComboBox1_Enter()
'Erste Combobox. Jeder Standort aus Spalte A wird nur einmal angezeigt.
Set mobjDic = CreateObject("Scripting.Dictionary")
With Worksheets(C_mstrDatenblatt)
For mlngZ = 5 To mlngLast
If Not IsEmpty(.Cells(mlngZ, 1).Value) Then _
mobjDic(.Cells(mlngZ, 1).Value) = 0
Next
End With
Me.ComboBox1.List = mobjDic.keys
Set mobjDic = Nothing
End Sub
Private Sub ComboBox2_Enter()
'Zweite Combobox in Abhängigkeit von Combobox1.
'Jeder Artikel aus Spalte B wird ei angezeigt.
Set mobjDic = CreateObject("Scripting.Dictionary")
With Worksheets(C_mstrDatenblatt)
For mlngZ = 2 To mlngLast
If .Cells(mlngZ, 1).Value = Me.ComboBox1.Value Then
mobjDic(.Cells(mlngZ, 2).Value) = 0
End If
Next
End With
Me.ComboBox2.List = mobjDic.keys
Set mobjDic = Nothing
End Sub
Private Sub CommandButton1_Click()
'Zeigt das erste UserForm Fenster an.
If ComboBox1.ListIndex > 0 Then
zeile = ComboBox1.ListIndex + 2
Unload Me
UserForm2.Show
End If
End Sub
Private Sub CommandButton2_Click()
'Userform schließen
Unload Me
End Sub
Private Sub UserForm_Initialize()
'Bei Start der Userform wird die unterste Zeile in Spalte A ermittelt
mlngLast = Worksheets(C_mstrDatenblatt).Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Und das vom 2. UserForm:
Option Explicit
'Modulweite Variablen deklarieren.
Const C_mstrDatenblatt As String = "Database"
Const C_mstrZielblatt As String = "Dashboard"
Dim mobjDic As Object
Dim mlngLast As Long
Dim mlngZ As Long
Private Sub CommandButton1_Click()
If TextBox1 = "" And TextBox2 = "" And TextBox3 = "" And TextBox4 = "" And TextBox5 = ""  _
And TextBox6 = "" Then
Worksheets(C_mstrDatenblatt).Rows(zeile).Delete
End If
Worksheets(C_mstrDatenblatt).Cells(zeile, 1) = TextBox1
Worksheets(C_mstrDatenblatt).Cells(zeile, 2) = TextBox2
Worksheets(C_mstrDatenblatt).Cells(zeile, 4) = TextBox4
Worksheets(C_mstrDatenblatt).Cells(zeile, 5) = TextBox5
Worksheets(C_mstrDatenblatt).Cells(zeile, 6) = TextBox6
Unload Me
End Sub
Private Sub CommandButton2_Click()
'Userform schließen.
Unload Me
End Sub
Private Sub CommandButton3_Click()
'Aktuellen Eintrag löschen.
temp = MsgBox("Soll der Eintrag wirklich gelöscht werden?", vbYesNo)
If temp = vbYes Then
Worksheets(C_mstrDatenblatt).Rows(zeile).Delete
Unload Me
End If
End Sub
'Private Sub UserForm_Initialize()
'Bei Start der Userform wird die unterste Zeile in Spalte A ermittelt
'    mlngLast = Worksheets(C_mstrDatenblatt).Cells(Rows.Count, 1).End(xlUp).Row
'End Sub
Private Sub UserForm_Initialize()
TextBox1 = Worksheets(C_mstrDatenblatt).Cells(zeile, 1)
TextBox2 = Worksheets(C_mstrDatenblatt).Cells(zeile, 2)
TextBox3 = Worksheets(C_mstrDatenblatt).Cells(zeile, 3)
TextBox4 = Worksheets(C_mstrDatenblatt).Cells(zeile, 4)
TextBox5 = Worksheets(C_mstrDatenblatt).Cells(zeile, 5)
TextBox6 = Worksheets(C_mstrDatenblatt).Cells(zeile, 6)
End Sub
Ich muss dazu sagen als ich die Buttons und die Daten auf der selben Tabellenseite hatte ging es aber das ist unpraktisch daher habe ich die Daten auf ein zweites Tabellenblatt kopiert. Leider funktioniert es jetzt nicht mehr.
Woran kann das nur liegen? Es kommt keine Fehlermeldung. Liegt es an irgendeiner Zuweisung?
Viele Grüße Marco

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 08:47:04
ChrisL
Hi Marco
Die Public Deklaration für die Variable "zeile" fehlt.
Ansonsten müsstest du eine Beispieldatei laden, damit man den Code mal in Einzelschritten durchspielen kann.
cu
Chris

AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 10:06:07
Marco
Hi Chris meinst du die Deklaration für das zweite Userform? Hier in dem Abschnitt?
Private Sub UserForm_Initialize()
Ich habe mal die Datei hochgeladen weil ich nicht so ganz weiß was du meinst bzw wie ich da ran gehen soll.
https://www.herber.de/bbs/user/105615.xlsm
Also die Comboboxen funktionieren und nach der zweiten Combobox wenn man auf okay clickt kommt auch das nächster Userform aber halt nicht mit den dazu gehörigen daten. Wäre echt nett wenn du mir da weiterhelfen könntest.
Grüße Marco

Anzeige
AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 10:13:28
ChrisL
Hi Marco
Die globale Deklaration ist im Standardmodul bereits vorhanden.
Allerdings müsstest du hier was ändern:
Private Sub CommandButton1_Click()
'Zeigt das erste UserForm Fenster an.
If ComboBox1.ListIndex >= 0 Then
zeile = ComboBox1.ListIndex + 5
Unload Me
UserForm2.Show
End If
End Sub

cu
Chris

AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 11:17:55
Marco
Müsste ich hier:
Private Sub CommandButton1_Click()
'Zeigt das erste UserForm Fenster an.
If ComboBox1.ListIndex >= 0 Then
zeile = ComboBox1.ListIndex + 5
Unload Me
UserForm2.Show
End If
End Sub
einen String einfügen? Tut mir leid ich bin in VBA wirklich nicht fit ich weiß nicht wie ich es anstellen soll. Ich kann so was ohne VBA machen aber das ist sehr aufwendig und es läuft dann doch nicht so locker flockig wie in VBA. Können Sie mir da vll bitte helfen?
Ich habe schon gesehen das Sie beim Listenindex + 5 eingegeben haben. Ich vermute weil die If Schleife erst in Zeile 5 beginnen soll wie bei der Combobox 1.
Des Weiteren haben Sie hier > geänder auf >= damit die erste Zeile auch auswählbar ist oder?
Sry das ich so komische fragen stelle aber ich verstehe den Code nur zum Teil.
Grüße Marco

Anzeige
AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 11:27:24
ChrisL
Hi Marco
Es ist genau so wie du schreibst.
Die Frage mit dem String verstehe ich nicht ganz. Du müsstest einfach den Codeteil ersetzen.
cu
Chris

AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 11:48:02
Marco
Hm und durch was muss ich was ersetzen? Ich habe deine Änderungen übernommen aber es wird immer noch nicht richtig zugeordnet Chris.

AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 12:45:32
Marco
Herr Chris,
welchen Codeteil muss ich denn durch was ersetzen? Geht es darum das ich eine Zeile falsch deklariert habe?
Grüße Marco

AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 12:45:43
ChrisL
Noch ein Versuch:
Private Sub CommandButton1_Click()
'Zeigt das erste UserForm Fenster an.
If ComboBox1.ListIndex >= 0 And ComboBox2.ListIndex >= 0 Then
zeile = ComboBox1.ListIndex + ComboBox2.ListIndex + 5
Unload Me
UserForm2.Show
End If
End Sub

Habe übersehen, dass ComboBox2 auch mitberücksichtigt werden muss.
cu
Chris

Anzeige
AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 13:02:50
Marco
Also Chris danke für deine hilfe. Ich habe den geänderten Code von dir übernommen aber es hat sich nichts verändert. Muss ich vielleicht im UserForm2 noch etwas am Code ändern? Ich glaube fast das es da ein Problem mit der übergabe der Werte in die Textfenster gibt.
Ich habe jetzt mal meine aktuelle Datei hochgeladen. Wenn ich jetzt z. B. Kassel auswähle und dann Stufenschalter passt alles und wenn ich dann auf Okay clicke wird im nächsten Fenster Dortmund usw.. angezeigt. Ich vermute fast das da der Wurm drin ist, aber ich finde ihn nicht.
https://www.herber.de/bbs/user/105618.xlsm
Ach und danke für den Code gerade jetzt wo ich es sehe ergibt es einen Sinn bzw. kommt es mir bekannt vor so was haben wir mal in der Schule gemacht in Informatik.
Grüße Marco

Anzeige
AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 13:12:28
ChrisL
Hi Marco
Sorry, hatte da einen Überlegungsfehler gemacht... Jetzt sollte es klappen
Private Sub CommandButton1_Click()
'Bestätigt die ausgewählten Combobox Werte, schließt das UserForm1 und öffnet das UserForm2.
Dim iZeile As Long
If ComboBox1.ListIndex >= 0 And ComboBox2.ListIndex >= 0 Then
With Worksheets(C_mstrDatenblatt)
For iZeile = 5 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(iZeile, 1) = ComboBox1 And .Cells(iZeile, 2) = ComboBox2 Then
zeile = iZeile
Exit For
End If
Next iZeile
End With
Unload Me
UserForm2.Show
End If
End Sub

cu
Chris

Anzeige
AW: Abhängige Combobox mit verweis auf anderes Blatt
18.05.2016 13:20:33
Marco
haha coole Sache es läuft tausend dank =D
Jetzt kann ich mir die nächsten Sachen überlegen. Find ich echt klasse von dir Chris ^^

347 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige