Hallo dennis,
verstehe deine Frage nicht. Die Prozedur, die hinter dem Button "Liste aktualisieren" angelegt ist, sucht gemäß Kriterien und der Vergleichs-Funktion die zutreffenden Einträge in allen Zeilen und listet diese dann.
Falls du mehr Einträge erwartest, als angezeigt werden, dann stimmen evtl. die Daten-Typen in der Tabelle (Zahl oder Text) nicht mit denen in der Vergleichs-Routine überein. Die Textboxen mit den Kriterien liefern als Ergebnis -wie der Name schon andeutet- einen Text. Sind in der Vergleichsspalte, wie in meinem Beispiel in Spalte D, Zahlen, dann muss für den Vergleich der Inhalt der Textbox in eine Zahl umgewandelt werden oder umgekehrt.
Du muss also prüfen, ob die If-Bedingungen im folgenden Abschnitt für deine Daten korrekt sind.
Außerdem bin ich in meinem Beispiel davon ausgegangen, dass in Spalte 1(A) in jeder Zeile ein Eintrag steht, so dass in der For-Anweisung die letzte Daten-Zeile korrekt berechnet werden kann.
Starte das Formular im Schritt-Modus (F8 im VBA-Editor, immer mit F8 weiter) dann kannst prüfen, bei welchen Werten in der Tabelle das Ergebnis nicht nach deinen Vorstellungen ist und die If-Bedingung anpassen.
Gruß
Franz
Private Sub CommandButton3_Click()
'Liste Aktualisieren
Dim lngZeile As Long, lngSpalte As Long, ListZeile As Long, arrTemp()
With wksData
ListZeile = -1
ReDim ListData(0 To 12, 0 To 0)
'Daten gemäß Kriterien für Spalte D und L in Datenarray schreiben
For lngZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
'Werte in Spalte 4 (D) und 12 (L) mit den Kriterien vergleichen
If .Cells(lngZeile, 4) = CDbl(Me.tbox_Kriterium1.Value) _
And .Cells(lngZeile, 12) Like Me.tbox_Kriterium2.Value Then '### Zeile(n) prüfen
ListZeile = ListZeile + 1
ReDim Preserve ListData(0 To 12, 0 To ListZeile)
For lngSpalte = 1 To 12
ListData(lngSpalte - 1, ListZeile) = .Cells(lngZeile, lngSpalte).Value
Next
'Merken der Zeile in der Datentabelle in Zeile 12 des Arrays
ListData(12, ListZeile) = lngZeile
End If
Next
End With