Herbers Excel-Forum - das Archiv

VBA-Script nach AutoFilter Aufrufen

Bild

Betrifft: VBA-Script nach AutoFilter Aufrufen
von: Markus

Geschrieben am: 04.04.2005 13:13:41
Hallo Zusammen,
ich möchte nach dem Auswälen eines AutoFilters eine VBA Funktion aufrufen.
Wie kann ich dies machen?
Bei Änderungen am Sheet kann ich die folgende Funktionn verwenden:
Private Sub Worksheet_SelectionChange()...
Leider hat die Auswahl des AutoFilters keinen Aufruf dieser Funktion zur folge...
Danke.
Markus
Bild

Betrifft: AW: VBA-Script nach AutoFilter Aufrufen
von: Boris

Geschrieben am: 04.04.2005 13:21:47
Hi Markus,
theoretisch kannst du dafür das Calculate-Ereignis nutzen (mit Hilfe der irgendwo hinterlegten Funktion ZUFALLSZAHL() ), indem du bei jeder Berechnung den Status der einzelnen Filter des Filterobjektes überprüfst.
Schwierigkeit dabei, dass das Calculate-Ereignis bei jeder beliebigen Aktion ausgelöst wird (z.B. normale Zelleingabe), du ja dein makro aber nur aufrufen möchtest, wenn ein Filter geändert wurde. Hat zur Folge, dass man die Filterstati irgendwo zwischenspeichern muss (z.B. in einer globalen Arrayvariablen).
Lange Rede kurzer Sinn: Bei "Kaum Excel/VBA-Kenntnisse" ein nicht zu empfehlendes Unterfangen.
Schilder doch mal den Hintergrund deiner Anfrage - vielleicht gibt´s ja ne andere Lösung.
Grüße Boris
Bild

Betrifft: AW: VBA-Script nach AutoFilter Aufrufen
von: Markus

Geschrieben am: 04.04.2005 14:35:04
Hallo Boris,
Danke! Die Idee mit der Zufallszahl-Funktion hat mir schon sehr geholfen.
Ich verwende nun die folgende Funktion um nach dem Auswählen im AutoFilter
immer einen zusätzlichen Wert mit hinzuzufügen.
Gruß
Markus
Private Sub Worksheet_Calculate()
Set w = Worksheets("Tabelle1")
With w.AutoFilter
currentFiltRange = .Range.Address
With .Filters
ReDim filterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
filterArray(f, 1) = .Criteria1
If .Operator Then
filterArray(f, 2) = .Operator
filterArray(f, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
If Len(filterArray(5, 1)) > 0 Then
If Len(filterArray(5, 3)) = 0 Then
Selection.AutoFilter field:=5, Criteria1:=filterArray(5, 1), Operator:=xlOr, _
Criteria2:="=ALL"
End If
End If
If Len(filterArray(6, 1)) > 0 Then
If Len(filterArray(6, 3)) = 0 Then
Selection.AutoFilter field:=6, Criteria1:=filterArray(6, 1), Operator:=xlOr, _
Criteria2:="=ALL"
End If
End If
End Sub

Bild

Betrifft: Viell. solltest du künftig nicht so tief stapeln..
von: Boris
Geschrieben am: 04.04.2005 16:08:05
Hi Markus,
denn mit "Kaum Kenntnisse" hat dein geposteter Code wenig zu tun.
Grüße Boris
 Bild
Excel-Beispiele zum Thema "VBA-Script nach AutoFilter Aufrufen"
Autofilter auch mit Ziffern von Zahlen Zellenwert als Autofilter-Kriterienwert
AutoFilter über mehrere Arbeitsblätter setzen Kopfzelle mit aktivem Autofilter markieren
Nur die sichtbaren Zellen eines AutoFilter-Bereiches einlesen Anzahl der durch Autofilter ermittelten Datensätze anzeigen
Autofilter-Kriterien über UserForm vorgeben Makroaufruf bei Betätigung des Autofilters
Autofilter-Kriterien nach dem Filtern anzeigen Kopfzeile einer Autofilter-Tabelle gelb hinterlegen