Kriterium Autofilter variabel auslesen & einsetzen
24.11.2008 11:57:57
bjoern
ich habe da ein Problem - für Euch wird es sicherlich einfach sein.
Folgender Sachverhalt. Ich habe eine Excel-Liste, in der bestimmte Werte in einer bestimmten Spalte mit "nein" gesetzt werden sollen. Dafür habe ich Makro übernommen, dass ich nachpflege.
Ich habe eine sehr fehleranfällige Lösung übernommen: Für jedes Element habe ich nachfolgenden Quellcode (als Beispiel für das 436. Kriterium):
Selection.AutoFilter Field:=1, Criteria1:="KRITERIUM436"
Range("A1").Select
'Abfrage, wieviele Datensätze im Autofilter stehen
'Anzahl aller angezeigten Zellen (nicht Zeilen) im Autofilter einschließlich Kopfzeile
x = Application.WorksheetFunction.Subtotal(3, ActiveSheet.AutoFilter.Range)
'Anzahl der Spalten im Autofilter
y = ActiveSheet.AutoFilter.Filters.Count
'Anzahl der Zeilen im Autofilter (ohne Kopfzeile)
z = ((x / y) - 1)
If z > 0 Then
Dim iRow63tub436 As Integer, iRowT63tub436 As Integer
iRow63tub436 = 3
Do Until IsEmpty(Cells(iRow63tub436, 1))
If Rows(iRow63tub436).Hidden = False Then
iRowT63tub436 = iRow63tub436
Exit Do
End If
iRow63tub436 = iRow63tub436 + 1
Loop
Range("H" & iRowT63tub436).Select
ActiveCell.FormulaR1C1 = "nein"
End If
Selection.AutoFilter Field:=1
Ich möchte jedoch, dass ich nicht bei jedem neuen Element den oben genannte Code kopiere, das Kriterium anpasse und die Variable "63tub436" um eins erhöhe bzw. wenn ein Papier nicht mehr in der Liste ist, den Code löschen.
Vielmehr möchte ich, dass ich auf einem neuen Blatt (Name z.B. "Nein") in der Datei diejenigen Kriterien definieren, die auf dem ersten Sheet auf "nein"gesetzt werden sollen. Hierdurch wird natürlich das Code wesentlich kürzer, da oben genannter Code nur noch einmal genutzt wird.
Jetzt komme ich zu dem Problem, dass ich das ganze übernommen habe und nicht so viel Ahnung davon habe. Was muss ich um dieses VBA drumbauen und umbauen, dass ich mittels einer do-loop (oder so?) die Kriterien auf dem neuen Blatt "Nein" Datensatz um Datensatz auslese, den Filter auf dem Blatt "Details" entsprechend setze und dann in der entsprechenden Zelle ein "nein" reinschreibe. Und das Makro solange läuft, bis eine leere Zeile kommt.
Hoffe auf einen Tipp / eine Lösung von Euch.
Danke & Grüße
bjoern
Anzeige