Nach Button-Klick Zeilen mit Bedingung ausblenden

Hallo,

ich möchte in meiner Tabelle 4 Buttons anlegen.

Funktion für Button 1 soll sein:
Blende alle Zeilen EIN wo in Spalte B ein „B“ steht.
Blende alle Zeilen AUS wo in Spalte B ein „F“ steht
Blende alle Zeilen AUS wo in Spalte B ein „S“ steht

Funktion für Button 2 soll sein:
Blende alle Zeilen EIN wo in Spalte B ein „F“ steht.
Blende alle Zeilen AUS wo in Spalte B ein „B“ steht
Blende alle Zeilen AUS wo in Spalte B ein „S“ steht

Funktion für Button 3 soll sein:
Blende alle Zeilen EIN wo in Spalte B ein „S“ steht.
Blende alle Zeilen AUS wo in Spalte B ein „B“ steht
Blende alle Zeilen AUS wo in Spalte B ein „F“ steht

Funktion für Button 4 soll sein:
Blende alle Zeilen EIN wo in Spalte B ein „F“ steht.
Blende alle Zeilen EIN wo in Spalte B ein „B“ steht
Blende alle Zeilen EIN wo in Spalte B ein „S“ steht

Ich muss gestehen, dass ich absoluter VBA-Anfänger bin.
Kann mir hier jemand helfen?
Wie müsste der Code hierfür aussehen? Und wo muss ich diesen einfügen?

Vielen Dank schon mal!

Gruß
Steffi

Hallo,

hast Du denn schon einen Autofilter in der Tabelle drin? Falls Ja, ginge das auch mit diesem ohne VBA, indem Du die Zeilen in Spalte B filterst. Falls kein Filter vorhanden ist, kannst Du einen solchen über die Auswahl eines Bereichs in Spalte B inklusive der Spaltenüberschrift und Aufruf von Start/Sortieren & Filtern/Filtern anlegen.

Gruß

Grüezi Steffi

Das Makro für Button 1 könnte so lauten:

Sub Knopf1()
Columns("B:B").Select
For Each zelle In Selection
    zv = zelle.Value
    If zv = "B" Then zelle.EntireRow.Hidden = False
    If zv = "F" Then zelle.EntireRow.Hidden = True
    If zv = "S" Then zelle.EntireRow.Hidden = True
Next zelle
Range("A1").Select
End Sub

Analog dazu werden die andern Knöpfe eingerichtet.

Wie Du ihn einfügen musst - dafür findest Du im Netz ganz bestimmt unzählige Anleitungen. Suche z. B. mal unter „Excel VBA Grundkenntnisse“. Wenn’s nicht klappt, dann melde Dich noch einmal.

Grüsse Niclaus

Hallo und vielen lieben Dank für die Antworten!

Niclaus, nach deiner Anleitung funktioniert es genau so wie ich es haben wollte. Also, das Ergebnis ist das richtige.
Allerding dauert es nach Klick auf einen Button immens lange bis fertigberechnet wurde.
Ist das normal, bzw. woran liegt das?
Sollte/kann ich den Zeilenbereich beschränken?
Also, statt komplette Spalte B prüfen, nur B1:B100.?

Grüße
Steffi

Hallo,

versuche es mal hiermit…

Sub Knopf1()
  
  Dim Zelle As Range
  
  Application.Cursor = xlWait
  Application.ScreenUpdating = False
  
  For Each Zelle In ActiveSheet.Range("B1:B100")
    
    Zelle.EntireRow.Hidden = _
    Zelle.Value = "F" Or _
    Zelle.Value = "S"
    
  Next
  
  Application.ScreenUpdating = True
  Application.Cursor = xlDefault
  
End Sub

Die Anzeige des Ein- und Ausblendens am Bildschirm wird durch ScreenUpdating = False unterdrückt und dadurch der Code etwas schneller. Select-Anweisungen sind meist überflüssig. Den Bereich kannst Du im Code vorgeben.

Gruß

Super! Wieder viel gelernt!
Niclaus

Dankeschön! Toll, dass Ihr Euch die Zeit nehmt!
Bringt schon etwas Besserung, aber leider nicht deutlich. Damit muss ich wohl erst mal leben.

Hallo,

seit (ich meine) Excel 2007 ist das Ein- und Ausblenden von Zeilen per VBA deutlich langsamer als in früheren Versionen; insbesondere bei vielen Zeilen. Deshalb hatte ich Dir im ersten Beitrag von mir vorgeschlagen den AutoFilter zu verwenden. Dieser ist meist schon schneller. Einen solchen könnte man auch ggf. per Code ansprechen. Hier mal ein Beispiel:

Public Sub FilterMitVBA_B()
  
  If ActiveSheet.AutoFilterMode Then
    
    Application.Cursor = xlWait
    Application.ScreenUpdating = False
    
    ActiveSheet.AutoFilter.ShowAllData
    ActiveSheet.Range(ActiveSheet.AutoFilter.Range.Address) _
   .AutoFilter Field:=1, Criteria1:="B", Operator:=xlFilterValues
    
    Application.ScreenUpdating = True
    Application.Cursor = xlDefault
    
  End If
  
End Sub

Der Code setzt voraus, dass ein Autofilter gesetzt ist und dieser in Spalte B beginnt (Field:=1) sowie eine Überschrift vorhanden ist, wo die Filterpfeile zu sehen sind. Als Kriterium wird dann „B“ verwendet.

Gruß

Klasse!! Dankeschön!
Ich muss dieses Thema leider ein paar Tage liegen lassen. Ich gebe aber asap Feedback!

Gruß
Steffi