ich weiß eure Arbeit immer mehr zu schätzen und werde zum Einen, um mein Wissen zu erweitern und zum Anderen um eure Finanzierung zu sichern, demnächst auch auf Hans Herbers CD zurückgreifen.
Doch zum Thema:
ich bastel immer noch an einer Userforms.
Diverse ComboBoxes greifen auf verschiedene Tabellen zu
und zu ComboBox5 gilt der unten stehende Code.
Erklärung:
Es müssen 6 Bedingungen erfüllt sein, um in der ComboBox5 bestimmte Werte (entweder "1/2" oder "3/4" oder beides) auswählen zu können.
In Spalte2 kommen alle Werte 4 mal vor. In der Spalte 3 stehen zu jedem Wert die Zahlen: 1, 2, 3 und 4. in Spalte 4 kann stehen: "A", "B", etc.
Die Bedingungen sind:
1) Wert in Spalte 1 muss mit Eintrag in ComboBox3 übereinstimmen
2) Wert in Spalte 2 muss mit Eintrag in ComboBox4 übereinstimmen
3) Wert in Spalte 3 ist eine "1"
4) eine Spalte tiefer steht in Spalte 3 eine "2"
5+6) und zu den beiden letzten Bedingungen muss erfüllt sein, dass in Spalte 4 ein "A" steht.
Das selbe gilt, wenn in Spalte 3 eine "3" bzw. "4" steht.
Der unten stehende Code läuft fehlerfrei, aber entsprechend langsam, da der gesamte Tabellenbreich (10000 Zeilen) sechsmal durchlaufen werden muss.
Jetzt meine Bitte:
sieht jemand von euch eine Chance den Code zu vereinfachen / beschleunigen?
Ich habe es schon mal mit "Select Case" probiert, aber das krieg ich nicht hin.
Private Sub ComboBox4_Change()
Dim cbbtext_3 As String 'Text der ComboBox3
Dim cbbtext_4 As String 'Text der ComboBox4
Dim r As Integer 'belegte Zeilen
Dim j As Integer 'Durchlauf-Variable
ComboBox5.Clear
r = Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row
cbbtext_3 = ComboBox3.Text
cbbtext_4 = ComboBox4.Text
For j = 1 To r
If Sheets("Tabelle1").Cells(j, 1) = cbbtext_3 _
And Sheets("Tabelle1").Cells(j, 2) = cbbtext_4 _
And Sheets("Tabelle1").Cells(j, 3) = "1" _
And Sheets("Tabelle1").Cells(j + 1, 3) = "2" _
And Sheets("Tabelle1").Cells(j, 4) = "A" _
And Sheets("Tabelle1").Cells(j + 1, 4) = "A" Then
ComboBox5.AddItem "1/2"
ElseIf Sheets("Tabelle1").Cells(j, 1) = cbbtext_3 _
And Sheets("Tabelle1").Cells(j, 2) = cbbtext_4 _
And Sheets("Tabelle1").Cells(j, 3) = "3" _
And Sheets("Tabelle1").Cells(j + 1, 3) = "4" _
And Sheets("Tabelle1").Cells(j, 4) = "A" _
And Sheets("Tabelle1").Cells(j + 1, 4) = "A" Then
ComboBox5.AddItem "3/4"
End If
Next j
End Sub
Vielen Dank für euern Einsatz
Gruß
Christoph