wie in gefilterter liste nächste zeile ansprechen? (vba)

02/08/2010 - 14:28 von michlchen | Report spam
hallo ng.

ich habe des öfteren probleme, bei dateien mit gesetzem autofilter,
mit vba die nàchste nicht gefilterte zeile zu finden. gibt es hier
irgendwelche tricks? (activecell.offset(1,0) klappt ja nicht, da die
nàchste zeile ja ausgefiltert sein könnte und ich die gar nicht
bearbeiten muss.)

bspw. sowas wie if activecell.entirerow. is filtered der sowas.
oder kann ich den tastendruck nach unten simulieren? (send keys oder
sowas.)
 

Lesen sie die antworten

#1 Andreas Killer
02/08/2010 - 16:17 | Warnen spam
Am 02.08.2010 14:28, schrieb michlchen:
ich habe des öfteren probleme, bei dateien mit gesetzem autofilter,
mit vba die nàchste nicht gefilterte zeile zu finden. gibt es hier
irgendwelche tricks? (activecell.offset(1,0) klappt ja nicht, da die


Ja, einige, hier sind 2.

Andreas.

Sub Test()
Dim R As Range
'Durchlaufe Spalte A, benutzter Bereich, sichtbare Zellen
For Each R In Intersect( _
Columns(1), _
ActiveSheet.UsedRange, _
Cells.SpecialCells(xlCellTypeVisible))
Debug.Print R
Next
End Sub

Function GetAutoFilterRange( _
Optional WithoutHeader As Boolean = True, _
Optional ByVal W As Worksheet = Nothing) As Range
'Gibt den sichbaren Datenbereich eines Autofilters zurück
Dim R As Range
If W Is Nothing Then Set W = ActiveSheet
If W.AutoFilterMode Then
'Aktiven Filterbereich holen
Set R = W.AutoFilter.Range
'Überschrift aus dem Bereich entfernen?
If WithoutHeader Then _
Set R = W.Range(W.Cells(R.Row + 1, R.Column), _
W.Cells(R.Row + R.Rows.Count - 1, R.Column + R.Columns.Count - 1))
'Wenn kein Filter aktiv ist den gesamten Bereich zurückgeben
If W.FilterMode Then
'Wenn keine Zellen da sind gibt es einen Fehler!
On Error Resume Next
'Alle sichtbaren Zellen im Filterbereich
Set R = R.SpecialCells(xlCellTypeVisible)
'Alle Zellen wurden gefiltert, kein Datenbereich
If Err <> 0 Then Set R = Nothing
End If
'Bereich zurückgeben
Set GetAutoFilterRange = R
Else
'Kein Autofilter, kein Bereich
Set GetAutoFilterRange = Nothing
End If
End Function

Ähnliche fragen