ja, das sehe ich. Aber ich kann dir versichern, dass es in der von dir geposteten Beispieldatei funktioniert. Wie es in deiner Originaldatei aussieht, weiß ich nicht. Ob in der Spalte AL die Bestellnummer als Zahlen stehen, als Texte, Formel oder sonst was. Fakt ist, das Excel nicht auswerten kann, wie oft eine Bestellnummer vorkommt und es somit bei der Dimensionierung des Array zu einen Fehler.
26.05.2020, 11:09 (Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2020, 11:12 von Pirat2015.)
nein es funktioniert nicht in deine datei, ich poste die Datei, schau mal die Tabelle an. Ach der fehler kommt nur wenn du versucht in die ComboBox was zu schreiben, wenn du per Auswahl macht dann hats du recht es funktioniert.
Aber ich soll schon eine nummer reinschreiben dürfen, ich habe in der Tabelle ca. 1000 nummre bis ich die nötige per Ausfall finde dauert es sehr lange
Private Sub ComboBox1_Change() ListBox1.Clear 'Variablendeklarationen - Integer (%) Dim icnt1%, icnt2% Dim vntSpalten As Variant Dim vntArray() As Variant Dim lngC As Long, lngA As Long, lngB As Long 'Schleifenzaehler auf 4 setzen (Anfangszeile in Quelle) If Len(Me.ComboBox1.Value) <> 6 Then Exit Sub icnt1 = 18 'die Spalten, die in die Listbox kommen sollen vntSpalten = Array(14, 21, 22, 24, 25, 29, 30, 32, 38, 39, 42, 62, 63, 64) 'Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt lngC = WorksheetFunction.CountIf(Columns(38), Me.ComboBox1.Value) ReDim vntArray(0 To lngC - 1, 0 To UBound(vntSpalten)) Do While Cells(icnt1, 38) <> "" 'Wenn der Zellinhalt der Auswahl entspricht, dann If Cells(icnt1, 38).Value = Val(Me.ComboBox1.Value) Then 'Mit der Listbox ... (fuellen) For lngA = 0 To UBound(vntSpalten) vntArray(lngB, lngA) = Cells(icnt1, vntSpalten(lngA)).Value Next lngA lngB = lngB + 1 'Ende Wenn der Zellinhalt der Auswahl entspricht, dann End If 'Schleifenzaehler iCnt1 hochsetzen icnt1 = icnt1 + 1 'Ende Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt Loop Me.ListBox1.List = vntArray End Sub
Private Sub ComboBox1_Change() ListBox1.Clear 'Variablendeklarationen - Integer (%) Dim icnt1%, icnt2% Dim vntSpalten As Variant Dim vntArray() As Variant Dim lngC As Long, lngA As Long, lngB As Long 'Schleifenzaehler auf 4 setzen (Anfangszeile in Quelle) If Len(Me.ComboBox1.Value) <> 6 Then Exit Sub icnt1 = 18 'die Spalten, die in die Listbox kommen sollen vntSpalten = Array(14, 21, 22, 24, 25, 29, 30, 32, 38, 39, 42, 62, 63, 64) 'Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt lngC = WorksheetFunction.CountIf(Columns(38), Me.ComboBox1.Value) If lngC > 0 Then ReDim vntArray(0 To lngC - 1, 0 To UBound(vntSpalten)) Do While Cells(icnt1, 38) <> "" 'Wenn der Zellinhalt der Auswahl entspricht, dann If Cells(icnt1, 38).Value = Val(Me.ComboBox1.Value) Then 'Mit der Listbox ... (fuellen) For lngA = 0 To UBound(vntSpalten) vntArray(lngB, lngA) = Cells(icnt1, vntSpalten(lngA)).Value Next lngA lngB = lngB + 1 'Ende Wenn der Zellinhalt der Auswahl entspricht, dann End If 'Schleifenzaehler iCnt1 hochsetzen icnt1 = icnt1 + 1 'Ende Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt Loop Me.ListBox1.List = vntArray Else MsgBox "Bestellnummer nicht gefunden" End If End Sub