Excel Zeilen Aus- und Einblenden per Button

Hallo,
Meine bisherige Netzsuche war bislang erfolglos des wegen wende ich mich an Euch.
Ich möchte aus Übersichtlichkeitsgründen in meiner Tabelle (hier von Teile 9 bis 850) alle Zeilen der Spalte „Y“ in denen ein Datum eingetragen ist Aus- und ein Einblenden können.
Habe gelesen das so etwas mittels eines Togglebuttons möglich ist.
Die Autofilterfungtion ist hier bei über 50 Spalten
etwas unpraktisch.
Wäre schön wenn jemand für mich eine Lösung hätte.

Vielen Dank schon mal für Eure Mühen und Hilfe.
Benutze Excel 2002 und 2003

Euer Lernfix

Grüezi Lernfix

Das würde ich dennoch über den Autofilter lösen.

Zeichne mit dem Recorder zwei Makros auf - einmal zum setzen und einmal zum Aufheben des Autofilters.

Diese Makros kannst Du dann entweder zwei Buttons zuweisen oder mit einem Toggle-Button kombinieren.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo lernfix,
hinterlege folgenden VBA-Code zu dem ToggleButton. Dann sollte es klappen:

Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
For i = 9 To 850
inhalt = Sheets(„Tabelle1“).Cells(i, 25).Value
If inhalt „“ Then Sheets(„Tabelle1“).Cells(i, 25).EntireRow.Hidden = True
Next i
Else
Sheets(„Tabelle1“).Rows(„9:850“).Hidden = False
End If
End Sub

Gruß
Natator

Hallo,

hier ein Vorschlag, zum Anfang:

Sub Makro1()

’ Makro1 Makro
’ Makro am 25.11.2011 von KI aufgezeichnet


Range(„A9:N9“).Select
Selection.EntireRow.Hidden = True
End Sub

Gruß

Hallo,
im Prinzip ist das ganz einfach - wenn man etwas mit VBA (Visual Basic for Applications) umgehen, d.h. etwas programmieren kann.
Wie das Ein-/Ausblenden von Zeilen/Spalten funktioniert siehst Du am besten mittels Makromitschnitt: Extras->Makro->Aufzeichnen…,
dann Zeile(n) auswählen, ein-/ausblenden, Aufzeichnung beenden, den Code ansehen und anpassen.
Etwas problematischer ist die Ausführung des Codes: dazu Click in der Menuleiste mit der rechten Maustaste, Visual Basic anclicken, die Werkzeugbox aktivieren und eine OptionBox auf der Tabelle einrichten. Diese mit dem Modul zum Ein-/Ausblenden verknüpfen, dieser wird bei jedem Click auf die Box aktiviert, man muss also hier den Zustand abfragen und entsprechend reagieren.
Alles klar?
Viel Erfolg (übrigens, ich mache keine Codierungen, ich gebe nur Tipps)
Rainer

Hallo Lernfix,

Einfach ales mit Makro Recorder aufzeichnen, Button einfügen und den Button auf den Script veerweisen.
Das wars.
LG Fred

Hallo Lernfix,

zwei Buttons (ein und aus) und das jeweilige Makro dahinterlegen:

Sub aus()
Application.ScreenUpdating = False
LR = [F65536].End(xlUp).Row

For i = 1 To LR
Cells(i, 6).Select

If IsDate(ActiveCell) Then
Rows(i).Select
Selection.EntireRow.Hidden = True
End If
Next i
Range(„F1“).Select
Application.ScreenUpdating = True
End Sub

Sub ein()
Application.ScreenUpdating = False
Rows(„1:65000“).Select
Selection.EntireRow.Hidden = False
Range(„F22“).Select
Application.ScreenUpdating = True
End Sub

Gruß,
Jochen

Hallo Lernnix,

Bei diesem Problem kann ich dir jetzt leider nicht spontan weiterhelfen. Da müsste ich selber noch ein wenig recherchieren um dieses Problem zu lösen. Leider habe ich dafür jetzt keine Zeit.

MFG

die lösungen von natator und jochen würde ich so kombinieren:

Private Sub ToggleButton1_Click()
Application.ScreenUpdating = False
If ToggleButton1.Value = True Then
For i = 9 To 850
If IsDate(Sheets(„Tabelle1“).Cells(i, 25)) Then Sheets(„Tabelle1“).Cells(i, 25).EntireRow.Hidden = True
Next i
Else
Sheets(„Tabelle1“).Rows(„9:850“).Hidden = False
End If
Application.ScreenUpdating = True
End Sub

viel erfolg!

Hallo Lernfix,

  • Im Excel [Alt] + [F11] drücken
  • Es geht der VBA Editor auf

im Projektfenster(links) --> rechte Maustaste -> Einfügen -> Userform

  • Im Eigenschaftsfenster (links) (Name): „frmSteuerung“
  • Auf dem Formular zwei Buttons anlegen
  • Button 1 im Eigenschaftsfenster(links!) umbenennen (Name) „cmbEinblenden“
  • zweiter Button mit namen „cmbAusblenden“
  • Beide Buttons beschriften mit Ein- bzw Ausblenden
  • Button cmbEinblenden doppelt anklicken und dann den Code rein:

Private Sub cmbEinblenden_Click()
Dim i As Integer
Application.ScreenUpdating = False
For i = 9 To 850
Cells(i, 25).EntireRow.Hidden = False
Next i
Me.Hide
Application.ScreenUpdating = True
End Sub

und dann doppelt den zweiten cmbAusblenden anklicken und den code rein

Private Sub cmbAusblenden_Click()
Dim i As Integer
Application.ScreenUpdating = False
For i = 9 To 850
If IsDate(Cells(i, 25).Value) Then
Cells(i, 25).EntireRow.Hidden = True
Else
Cells(i, 25).EntireRow.Hidden = False
End If
Next i
Me.Hide
Application.ScreenUpdating = True
End Sub

Dann rechte Maustaste auf Projektfenster -> Einfügen -> „Modul“

folgenden Code rein

Sub Formular_anzeigen()
frmSteuerung.Show
End Sub

dann kann man über Makros aus dem Excel das Makro „Formular_anzeigen“ finden.

Wenn man das startet, dann geht das Formular auf.

Wenn du noch fragen hast, schreib zurück, wenn nicht und es funktioniert, dann bitte ich trotzdem um eine kleine antwort

mit freundlichen Grüßen

OVM

Anmerkung: / nicht mit in das modul einfügen! zeigt nur anfang und ende hier im thread!

lg

Hallo lernfix,

hoffentlich machst du deinem Namen Ehre…

Ein kleines VBA-Script in Excel-2003.
Gilt nur für 1.Zeile, ist aber ausbaufähig z.B. mit einer Schleife FOR/NEXT.

’ In Zeile 1 steht in Spalte Y ein Datum
’ Dieses wird erkannt und die ganze Zeile ausgeblendet
Sub Datumstest()
If Cells(1, 25) > 0 Then
Selection.EntireRow.Hidden = True
End If
End Sub

mfg
Softoldi

Vielen Dank,
Deine Lösung war die schnellste, wobei sich schnell insbesondere auf den Ablauf bezieht. Kein langes rödeln der Liste.
Perfekt!!!
Ich habe den Button nun Ausblenden genannt.

Geht das, dass sich der Butten nach dem anklicken und dem Ausblenden der nicht benötigten Daten in Einblenden umbenennt.

Wenn ja, wäre das natürlich das i-Tüpfelchen oben drauf.

Viele Grüße und nochmals vielen Dank für deine rasche Hilfe

LG Lernfix

Hallo Lernfix,

Meine bisherige Netzsuche war bislang erfolglos

Das ist wohl eher ein Problem der richtigen Webseite bzw. die gefundenen Lösungsansätze genau auf deine Bedürfnisse umzuschreiben.

Habe gelesen das so etwas mittels eines Togglebuttons möglich
ist.

Der Togglebutton als solches macht garnichts. Entscheidend ist das Makro das mit dem Togglebutton verknüpft ist.

Die Autofilterfungtion ist hier bei über 50 Spalten
etwas unpraktisch.

Wieso ist die Autofilterfunktion unpraktisch?
Eigentlich ist sie für so etwas ideal. Man muss halt damit umgehen können.

Ich gehe bei meiner Lösung davon aus, dass

  • du die Autofilterfunktion normalerweise nicht nutzt
  • in Spalte Y ab Zeile 9 in den Zellen entweder ein Datum oder nichts steht.
    Das Makro schaltet den Autofilter ab oder erstellt nur für die Spalte Y

Den Togglebutton aus den Active-X-Steuerelementen fügst du an der gewünsten Position im Tabellenblatt ein. Dann auf den Button Doppelklicken, damit das Grundgerüst (1. und letzte Zeile des Makros) angelegt wird. Dann den nachfolgenden Code ohne die „Private Sub ToggleButton1_Click()“ und „End Sub“ Zeile in dein Makro kopieren. ggf. muss du noch den Namen des Togglebuttons im Code anpassen.

Der von mir unter Excel 2007 erstellte Code sollte auch unter Excel 2003 funktionieren.

Gruß
Franz

'Erstellt unter Excel 2007
'Code unter dem Tabellen-Modul mit dem Toggle-Button
Private Sub ToggleButton1\_Click()

 Dim wks As Worksheet, Zeile\_L As Long
 Const ZeileTitel As Long = 8 'Zeile mit Spaltentiteln
 Const Spalte\_Filter As Long = 25 'Spalte Y
 Set wks = Me
 With wks
 'Alle Daten einblenden unf ggf. Autofilter abschalten
 If .AutoFilterMode = True Then
 If .FilterMode = True Then
 .ShowAllData
 End If
 .AutoFilterMode = False
 End If
 If Me.ToggleButton1.Value = True Then
 Zeile\_L = Application.WorksheetFunction.Max(ZeileTitel, \_
 .Cells.SpecialCells(xlCellTypeLastCell).Row)

 If Zeile\_L \> ZeileTitel Then
 'Leere Zeilen in Filter-Spalte ausblenden
 .Range(.Cells(ZeileTitel, Spalte\_Filter), .Cells(Zeile\_L, Spalte\_Filter)).AutoFilter \_
 Field:=1, Criteria1:=""
 End If
 Me.ToggleButton1.Caption = "Filter AUS"
 Else
 Me.ToggleButton1.Caption = "Filter EIN"
 End If
 End With
End Sub

Private Sub ToggleButton1_Click()
Application.ScreenUpdating = False
If ToggleButton1.Value = True Then
For i = 9 To 850
If IsDate(Sheets(„Tabelle1“).Cells(i, 25)) Then Sheets(„Tabelle1“).Cells(i, 25).EntireRow.Hidden = True
Next i
ToggleButton1.Caption = „Einblenden“
Else
Sheets(„Tabelle1“).Rows(„9:850“).Hidden = False
ToggleButton1.Caption = „Ausblenden“
End If
Application.ScreenUpdating = True
End Sub

Hallo lernfix,

hier mein Lösungsvorschlag (der erste Teil ist für den Toggelbutton, der zeite Teil blendet aus):

Private Sub ToggleButton1_Click()
'ist der Button gedrückt?
If ToggleButton1 = True Then
'wenn ja starte ausblenden der Zeilen mit Datum in Spalte „Y“
Call ausblenden
Exit Sub
'ist der Button nicht gedrückt zeige alle Zeilen
Else
'Bereich mit Daten markieren
ActiveSheet.UsedRange.Select
'alle Zeilen einblenden
Selection.EntireRow.Hidden = False
'Markierung auf aktuelle Zelle beschränken
ActiveCell.Select
End If
End Sub

Sub ausblenden()
Dim letzte As Integer
Dim Dat As Variant
Dim i As Integer
'letzte verwendete Zeile in Spalte „Y“ ermitteln
letzte = ActiveSheet.cells(Rows.Count, 25).End(xlUp).Row
For i = 4 To letzte
'in Variable Inhalt der ersten Zelle der Splate Y laden
Dat = cells(i, 19).Value
'Ist der Wert ein Datum?
If IsDate(Dat) = True Then
'wenn ja Zeile aktivieren
Rows(i).Activate
'und ausblenden
Selection.EntireRow.Hidden = True
End If
'nächste Zelle auf Datum prüfen
Next i
End Sub

Dann gut Programming, Gruß Hugo

schade, kein Feedback bekommen =(

schade, kein Feedback bekommen =(

Bitte entschuldige, dass ich mich erst jetzt melde,
war leider sehr lange krank.
Habe seinerzeit einen Mix aus verschiedenen Infos genommmen, nach dem ich jede Einzelne Hilfe ausprobiert hatte. Bin mit dem Ergebnis soweit zufrieden.

VG Lernfix

Dann gute Besserung und vielen dank…

Lg