goodbytes
Goto Top

Vba - AutoFilter

Hallo,
ich habe eine Excel-Datei mit ein paar Makros für einen User erstellt, um ihm viel Zeit zu ersparen bei einigen Auswertungen.

Das Sheet ist mit Filter-Optionen in einer Zeile versehen. Nun sollen automatisiert Auswertungen mit mehreren durch Makros gesetzten Filtern gefahren werden, in deren Folge eine neue Arbeitsmappe erzeugt wird mit nach bestimmten Namens-Vorgaben erzeugten Sheets darin. Es werden praktisch per Makro die Filter gesetzt, das Ergebnis in einer Tabelle innerhalb der Quellmappe erzeugt und diese dann in das in der neu erstellten Zielmappe in das jeweils nach Filter erzeugtem neuen Sheet reinkopiert.

Das funktioniert auch schon bestens. Ich verzweifel aber an einem kleinen Problem.

Unterhalb der AutoFilter-Zeile möchte ich nach der per Makro gesetzten Filterkombination den Index der ersten zutreffenden Zeile ermitteln, um sie dann als Variable weiterzuverwenden.

Ich habe schon alles Mögliche versucht, leider ohne Erfolg. Mir ist schon klar, dass es die "visible"-Eigenschaft gibt, ich hatte mir auch schon mal irgendwann eine Funktion gebastelt, damit für Berechnungen nur die "visible"-Zeilen berücksichtigt werden. Allerdings weiss ich momentan nicht mehr wie es war...

Vielleicht kann mir da ja mal Jemand einen kleinen Tipp geben?

Wie gesagt, es geht mir wirklich nur um die Ermittlung der ersten Zeile der Filterung (die Filter greifen erst ab Zeile 17, also die Einstellung erfolgt mittels der Zeile 16).

Gruß
Torsten

Content-Key: 176099

Url: https://administrator.de/contentid/176099

Printed on: April 16, 2024 at 22:04 o'clock

Mitglied: 76109
76109 Nov 11, 2011 at 13:36:36 (UTC)
Goto Top
Hallo TorstenB!

Wenn ich Dich richtig verstanden habe, dann in etwa so:
'Beispiel mit Tabelle1 und AutoFilter in Spalte F Zeile 16  

Sub RowIndex()
    Dim EndLine As Long, Index As Long
    
    With Sheets("Tabelle1")  
        EndLine = .Cells(.Rows.Count, "F").End(xlUp).Row  
        Index = .Range("F17:F" & EndLine).SpecialCells(xlCellTypeVisible).Row  
    End With
End Sub

Gruß Dieter
Member: goodbytes
goodbytes Nov 23, 2011 at 07:20:26 (UTC)
Goto Top
Hallo Dieter,
entschuldige, dass ich mich so spät melde. Ich hatte einfach zu viel um die Ohren...

Inzwischen hatte ich auch meine damals gebastelte Lösung wiedergefunden und entsprechend angepasst:

Function Erste_sichtbare_Zeile()

For i = 17 To Workbooks(Quelldatei).Sheets(1).Cells(Cells.Rows.Count, 1).End(xlUp).Row
        
    If Workbooks(Quelldatei).Sheets(1).Cells(i, 1).EntireRow.Hidden = False Then
        Erste_sichtbare_Zeile = i
        Exit For
    End If
Next

End Function

(Quelldatei ist hier eine Public-Variable.)

Aber vielen Dank für deine Lösung; ich habe sie mir in meine kleines Archiv mit aufgenommen, da muß ich beim nächsten Mal nicht mehr so suchen.

Eine schöne Woche wünsche ich dir noch !!!

Gruß Torsten