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

Beiträge aus den Excel-Beispielen zum Thema "VBA-Script nach AutoFilter Aufrufen"