1.5k Aufrufe
Gefragt in Tabellenkalkulation von

Ich habe mehrere Spalten mit Filtern, hier drunter sind entsprechend in einigen Zellen ein "x".

Per Makro möchte ich nun, dass man für die einzelnen Spalten automatisch die Spalten mit dem "x" an und abwählen kann. Ist das möglich?

Ich habe es bisher halt nur in eine Richtung quasi per Makro Aufzeichnung machen können.

Aber Excel sollte erkennen, ob die Zellen mit dem "x" gerade schon angezeigt werden oder nicht.

8 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

ich gehe mal davon aus, dass in Zeile 3 in den Spalten F bis K Befehlsschaltfächen aus den Active-X-Steuerelementen eingefügt sind. Hinterlege dort den folgenden Code (Beispiel für Spalte F):

Private Sub CommandButton1_Click()
Call filter_an_aus(6)
End Sub


Für Spalte G muss in der Klammer eine 7 stehen, für Spalte H eine 8 usw.

Füge den folgenden Code in ein allgemeines Modul ein:

Sub filter_an_aus(lngSpalte As Long)
Dim bFilter As Boolean

With ActiveWorkbook.ActiveSheet
 
 'Status des aktuellen Filters der Spalte in Variable schreiben
 bFilter = .AutoFilter.Filters(lngSpalte).On

 'prüfen ob im Filtermodus und falls ja, dann alle Daten anzeigen lassen
 If .FilterMode Then .ShowAllData
   
 'Falls in anderer Spalte ein Filter gesetzt war
  If bFilter = False Then
    'dann jetzt Autofilter in aktueller Spalte setzen
    .UsedRange.AutoFilter field:=lngSpalte, Criteria1:="x"
  End If
End With

End Sub


Ist ein Filter in der Spalte gesetzt, von dem aus das Makro aufgerufen wird, wird der Filter aufgehoben. Ist ein Filter in einer anderen Spalte gesetzt, so wird auf die aktuelle Spalte gefiltert. Gefiltert wird auf ein kleines x, das musst du ggf. auf deine Verhältnisse anpassen.

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo und danke für deine Antwort.

Ja genau, hatte da Active-X-Steuerelemente eingefügt.

Jetzt ist es aber so, dass man an- und abwählen kann, aber die anderen Spalten ausgeblendet werden.

Ich bräuchte es so, dass man jeden Button anklicken kann und die entsprechende Spalte dann ein- oder ausgeblendet wird, unabhängig von den anderen Spalten daneben. Also so, dass man sich auch mehrere Spalten nebeneinander anzeigen lassen kann.

LG
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

ich hoffe, ich habe dich richtig verstanden. Dann versuche es mal so:

Sub filter_an_aus(lngSpalte As Long)

With ActiveWorkbook.ActiveSheet
 
'Falls in anderer Spalte ein Filter gesetzt war
  If .AutoFilter.Filters(lngSpalte).On = False Then
    'dann jetzt Autofilter in aktueller Spalte setzen
    .UsedRange.AutoFilter Field:=lngSpalte, Criteria1:="x"
   Else
    'in Spalte wieder alles einblenden  
   .UsedRange.AutoFilter Field:=lngSpalte
 End If
End With

End Sub


Gruß

M.O.

0 Punkte
Beantwortet von
Hey,

hm irgenwie funktioniert das nicht so.

Es gibt in der Spalte den Filter auf "x" und "leer" quasi. Und dazwischen sollte man bei jedem Kick auf den Button wechseln können quasi.

    ActiveSheet.Range("$A$3:$BF$89").AutoFilter Field:=10, Criteria1:="="
    ActiveSheet.Range("$A$3:$BF$89").AutoFilter Field:=8
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

ich verstehe gerade nicht, was du willst. Das gepostete zweite Makro blendet entweder alle Zeilen in der betreffenden Spalte ein oder nur die Zeilen mit einem x. Bei mehreren Spalten funktioniert das natürlich nur, wenn in beiden Spalten ein x in der gleichen Zeile steht und auch abhängig davon welche Spalte als erste gefiltert wird,

Was mit dem Autofilter nicht funktioniert, ist dass unabhängig von bereits gefilterten Spalten alle Werte mit x in einer anderen Spalte angezeigt werden.

Dazu müsstest du dann einen Spezialfilter verwenden. Dazu kannst du mal hier nachschauen:

Link 1

Link 2  (Mehrere Kriterien, mehrere Spalten, beliebige Kriterien = WAHR)

Dazu müsstest du aber deine Tabelle leicht ändern.

Gruß

M.O.

0 Punkte
Beantwortet von
Hi,

achsooo, ja genau das meinte ich so. Also das die Spalten angezeigt werden wo ein x drinsteht.

Oh ja, dann muss dafür also ein spezialfilter her und den kann ich dann aber über die Makros an und ausschalten pro Spalte?

Muss ich dafür die Tabelle auch schon ändern?

Liebe Grüße
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

du kannst den Spezialfilter nicht über die Makros starten. Lies dir mal z.B. den Link 1 durch. Da wird ganz gut erklärt, wie ein Spezialfilter funktioniert und wie die Tabelle aufgebaut sein muss.

Gruß

M.O.
0 Punkte
Beantwortet von
Hey,

okay alles klar, ich danke dir für deine Hilfe :)
...