AW: Change Ereignis in UserForm
22.11.2017 15:22:53
Christian
Vielen Dank schon mal an alle...
ich versuche es mal besser zu beschreiben.
In dem Tabellenblatt "Dropdowns Analyse" befinden sich die Grundlagen der RowSources der Comboboxen.
Spalte T für Combobox 3, Spalte Y für Combobox 5.
Beide Spalten sind dynamisch, d.h. es ändern sich die Inhalte der Spalten und damit der Auswahl für die Comboboxen in Abhängigkeit der Eingaben.
So kann es kommen, dass durch die Eingabe in der ComboBox2 die bisherigen Auswahl in Spalte Y, also für die Combobox4, nicht mehr den Wert enthält, der sich noch in ComboBox 4 befindet. Immer genau dann soll dann der Wert der ComboBox 4 mit "Gesamt" überschrieben werden.
Auslöser des Ganzen ist der CommandButton3. In UserForm8 steht nur "Einen Augenblick bitte..."
Folgendes Szenario macht mich irre:
ComboBox3 = "Gesamt"
ComboBox4 = "Nora"
Durch eine Änderung in Combobox2 gilt "Nora" nicht mehr, so dass die ComboBox 4 mit "Gesamt" überschrieben werden soll. Das klappt.
Der Inhalt in ComboBox3 ("Gesamt") gilt weiterhin, nur hat das Wort/der Wert "Gesamt" in der Spalte T die Zelle gewechselt. In dieser Spalte T steht nun "Gesamt" in T8 und nicht, wie zuvor, in T9. In T9 findet sich nun "Einzelsicht". Und leider übernimmt die ComboBox3 nun die "Einzelsicht" aus T9.
Leider hat die Mappe sehr sensible Daten. Ich füge dennoch - mit der Bitte um Verständnis für die Länge der Ausführungen - mal die Codes ein.
Private Sub Combobox3_Change()
If Not lblnNoEvent Then
Dim strZeile As String
strZeile = "2"
If Worksheets("Dropdowns Analyse").Range("AF" & strZeile) = 0 Then Exit Sub
If Len(UserForm7.ComboBox3) = 0 Then
UserForm7.CommandButton5.Visible = False
UserForm7.ComboBox2.Locked = True
UserForm7.ComboBox2.BackColor = &H80000004
UserForm7.ComboBox4.Locked = True
UserForm7.ComboBox4.BackColor = &H80000004
Call Positions
Exit Sub
End If
If UserForm7.ComboBox3.Value = Worksheets("Dropdowns Analyse").Range("T" & strZeile).Value Then
UserForm7.CommandButton5.Visible = False
UserForm7.ComboBox2.Locked = False
UserForm7.ComboBox2.BackColor = vbWhite
UserForm7.ComboBox4.Locked = False
UserForm7.ComboBox4.BackColor = vbWhite
Call Positions
Exit Sub
End If
If Len(UserForm7.ComboBox3) > 0 And UserForm7.ComboBox3.Value Worksheets("Dropdowns Analyse") _
.Range("T" & strZeile).Value Then
UserForm7.CommandButton5.Visible = True
UserForm7.ComboBox2.Locked = True
UserForm7.ComboBox2.BackColor = &H80000004
UserForm7.ComboBox4.Locked = True
UserForm7.ComboBox4.BackColor = &H80000004
Call Positions
Exit Sub
End If
End If
End Sub
Private Sub CommandButton3_Click()
lblnNoEvent = True
Dim strZeile As String
strZeile = "2"
UserForm7.CommandButton3.Visible = False
UserForm8.Show vbModeless
UserForm8.TextBox1.Text = "Einen Augenblick bitte..."
UserForm8.Repaint
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
With Worksheets("Dropdowns Analyse")
Worksheets("Dropdowns Analyse").Range("N" & strZeile) = UserForm7.ComboBox2.Value
Worksheets("Dropdowns Analyse").Range("T" & strZeile) = UserForm7.ComboBox3.Value
Worksheets("Dropdowns Analyse").Range("Y" & strZeile) = UserForm7.ComboBox4.Value
UserForm7.ComboBox3.Value = ""
UserForm7.ComboBox4.Value = ""
End With
Application.Calculation = xlCalculationAutomatic
If WorksheetFunction.CountIf(Worksheets("Dropdowns Analyse").Range("T7:T1000"), Worksheets(" _
Dropdowns Analyse").Range("T" & strZeile)) = 0 Then
Worksheets("Dropdowns Analyse").Range("T" & strZeile) = "Gesamt"
UserForm7.ComboBox3.Value = Worksheets("Dropdowns Analyse").Range("T" & strZeile).Text
End If
If WorksheetFunction.CountIf(Worksheets("Dropdowns Analyse").Range("T7:T1000"), Worksheets(" _
Dropdowns Analyse").Range("T" & strZeile)) > 0 Then
UserForm7.ComboBox3.Value = Worksheets("Dropdowns Analyse").Range("T" & strZeile).Text
End If
If WorksheetFunction.CountIf(Worksheets("Dropdowns Analyse").Range("Y7:Y1000"), Worksheets(" _
Dropdowns Analyse").Range("Y" & strZeile)) = 0 Then
Worksheets("Dropdowns Analyse").Range("Y" & strZeile) = "Gesamt"
UserForm7.ComboBox4.Value = Worksheets("Dropdowns Analyse").Range("Y" & strZeile).Text
End If
If WorksheetFunction.CountIf(Worksheets("Dropdowns Analyse").Range("Y7:Y1000"), Worksheets(" _
Dropdowns Analyse").Range("Y" & strZeile)) > 0 Then
UserForm7.ComboBox4.Value = Worksheets("Dropdowns Analyse").Range("Y" & strZeile).Text
End If
UserForm7.ComboBox3.RowSource = "'Dropdowns Analyse'!" & Worksheets("Dropdowns Analyse"). _
Range("T3")
UserForm7.ComboBox4.RowSource = "'Dropdowns Analyse'!" & Worksheets("Dropdowns Analyse"). _
Range("Y3")
Call Positions
lblnNoEvent = False
Application.ScreenUpdating = True
UserForm8.Hide
End Sub