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