Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema ToggleButton
BildScreenshot zu ToggleButton ToggleButton-Seite mit Beispielarbeitsmappe aufrufen

Leere Zeilen bzw. Spalten ausblenden | Herbers Excel-Forum


Betrifft: Leere Zeilen bzw. Spalten ausblenden von: Dietmar aus Aachen
Geschrieben am: 12.11.2009 21:51:51

Guten Abend zusammen,

habe folgenden Code von Sepp hier im Forum gefunden.
Wie lässt der Code sich ändern, dass Zeilen/Spalten ausgeblendet werden, wenn keine Werte (!) enthalten sind.
Vorliegender Code blendet die Zeilen/Spalten auch aus , wenn Formeln enthalten sind, obwohl keine Werte drinstehen müssen. So z.B. weil eine Bezugsformel auf eine andere Zelle enthalten ist, die aber leer sein kann.

Option Explicit
Dim blnHidden As Boolean


Sub zeilen_spalten_aus_ein()
Dim rng As Range
Dim n As Integer
Set rng = Range("A5:D250")
Application.ScreenUpdating = False
If Not blnHidden Then
blnHidden = True
For n = 1 To rng.Rows.Count
If Application.CountA(rng.Rows(n)) = 0 Then rng.Rows(n).Hidden = blnHidden
Next
For n = 1 To rng.Columns.Count
If Application.CountA(rng.Columns(n)) = 0 Then rng.Columns(n).Hidden = blnHidden
Next
Else
blnHidden = False
rng.Rows.Hidden = blnHidden
rng.Columns.Hidden = blnHidden
End If
Application.ScreenUpdating = True
End Sub

Danke vorab
Dietmar aus Aachen

  

Betrifft: AW: Leere Zeilen bzw. Spalten ausblenden von: Gerd L
Geschrieben am: 12.11.2009 22:19:00

Hallo Dietmar!

Teste mal.

Option Explicit
Dim blnHidden As Boolean

Sub zeilen_spalten_aus_ein2()
Dim rng As Range
Dim n As Integer
On Error Resume Next
Set rng = Range("A5:D250").SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not rng Is Nothing Then
Application.ScreenUpdating = False
If Not blnHidden Then
blnHidden = True
For n = 1 To rng.Rows.Count
If Application.CountA(rng.Rows(n)) = 0 Then rng.Rows(n).Hidden = blnHidden
Next
For n = 1 To rng.Columns.Count
If Application.CountA(rng.Columns(n)) = 0 Then rng.Columns(n).Hidden = blnHidden
Next
Else
blnHidden = False
rng.Rows.Hidden = blnHidden
rng.Columns.Hidden = blnHidden
End If
Application.ScreenUpdating = True
End If
End Sub
Gruß Gerd


  

Betrifft: AW: Leere Zeilen bzw. Spalten ausblenden von: Dietmar aus Aachen
Geschrieben am: 12.11.2009 22:57:58

Hallo Gerd,

nein geht nicht.
Habe mit einer kleinen Matrix getestet und mal auf das ausblenden von Zeilen beschränkt.
Wenn ich den Bereich A5:A20 definiere und z.B. in A6 eintrage =C6, dann reagiert der Code nicht, egal ob in C6 ein Wert steht oder nicht. D.h. Der Bezhug in A6 nämlich =C6 wird als Eintrag gewertet, obwohl der Wert Null ist, weil C6 leer ist.

Hast Du noch eine Idee?

Besten Dank

Gruß
Dietmar aus Aachen


  

Betrifft: Archiv:="leere Zeile" ... von: Matthias L
Geschrieben am: 12.11.2009 23:31:29

Hallo

Wenn Du in A6 die Formel =C6 einträgst, ist das Ergebnis 0 also ist der Zellinhalt auch nicht leer
Wäre die Formel in A6: =WENN(C6;C6;"") wäre der .Valuewert ein Leerstring :)

mal nur für Spalte A
Quelle: https://www.herber.de/forum/archiv/900to904/t903603.htm#903609

Option Explicit
Sub test()
Dim letzte As Long, Zeile As Long
letzte = Range("A65536").End(xlUp).Offset(0, 0).Row
For Zeile = letzte To 1 Step -1
If Cells(Zeile, 1).Value = "" Or Cells(Zeile, 1).Value = 0 Then
Cells(Zeile, 1).EntireRow.Delete
End If
Next Zeile
End Sub
Gruß Matthias


  

Betrifft: Zeilen ausblenden, wenn Zelle zB A6 leer von: Dietmar aus Aachen
Geschrieben am: 13.11.2009 00:10:46

Danke Matthias,

1. =Wenn(C6;C5;"") geht nicht, weil wohl die Formel selbst hinderlich ist
2. der TestCode ist schon in etwa meine Suchrichtung. Allerdings wollte ich die in Zeilen nicht löschen, sondern wechselseitig ein- bzw. ausblenden. Die Codeergänzung mit "Hidden" geht allerdings nicht.

Noch eine Idee?

Viele Grüße

Dietmar aus Aachen


  

Betrifft: was ist bei Dir "leer" ? von: Matthias L
Geschrieben am: 13.11.2009 01:06:22

hallo

Was Du mir mit =Wenn(C6;C5;"") sagen willst, ist mir nicht ersichtlich.
=WENN(C6;C6;"") habe ich gepostet!

Zitat:
... sondern wechselseitig ein- bzw. ausblenden

Dann benutze ein ToggleButton, das hat nur 2 Zustände: True oder False.

Bei True blendest Du die Zeile ein bei False blendest Du die Zeile aus.

Gruß Matthias


  

Betrifft: probiers mal so (s. Beispiel) von: Matthias L
Geschrieben am: 13.11.2009 08:35:46

Hallo Dietmar

Hab das mal so umgesetzt, wie ich es jetzt verstanden habe.
Beispiel wieder für Spalte A

Dim loletzte As Long, i As Long
loletzte = Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = loletzte To 2 Step -1
If Cells(i, 1).Value = "" Or Cells(i, 1).Value = 0 Then Rows(i).EntireRow.Hidden = True
Next
Application.ScreenUpdating = True

mit Cells(Rows.Count, 1).End(xlUp).Row geht das so natürlich nur bei kleineren Datenmengen,
sonst kannst Du während der Ausführung des Code einkaufen gehen ;-)

Starte auf jeden Fall die Schleife von unten nach oben, nach dem Motto:
For i = DeineLetzteZeilennummer To 2 Step -1
in der Datei also For i = 31 To 2 Step -1

zum Einblenden dann so:
Cells.EntireRow.Hidden = False

https://www.herber.de/bbs/user/65849.xls

Gruß Matthias


  

Betrifft: AW: Noch Fragen von: Gerd L
Geschrieben am: 13.11.2009 22:02:06

Hallo Dietmar,

möchtest Du Zeilen ausblenden, wenn bestimmte Zellen leer sind oder den Formelwert "" enthalten?

Können in diesen Zellen ansonsten nur Zahlenwerte vorkommen oder auch andere Zeichenfolgen?

Gruß Gerd


  

Betrifft: Leere Zeilen ausblenden, ich habs! von: Dietmar aus Aachen
Geschrieben am: 16.11.2009 11:16:31

Danke an Euch,

ich habe die nachfolgende Lösung hier im Archiv gefunden.
Ich blende damit ganze Zeilen aus, wenn in der Spalte A nichts steht.

Leider ist es mir nicht gelungen, diesen Codes in einem zusammen zu fassen und ihn für einen einzelnen Wechselschalter anzupassen. Ich verwende einfach zwei Schaltflächen.


Option Explicit

Sub LeereZeilenAusblenden()
ActiveSheet.Unprotect Password:="12345678"
ActiveSheet.ScrollArea = ""
Application.ScreenUpdating = False

Dim nZeile As Long
For nZeile = 4 To 250

If Cells(nZeile, "A").Value < 1 Then
Rows(nZeile).Hidden = True
End If
Next nZeile

Application.ScreenUpdating = True
ActiveSheet.ScrollArea = "A1:EG250"
ActiveSheet.Protect Password:="12345678"
End Sub

Sub AlleZeilenZeigen()
ActiveSheet.Unprotect Password:="12345678"
ActiveSheet.ScrollArea = ""
Application.ScreenUpdating = False

Range("A4:A250").EntireRow.Hidden = False
  
Application.ScreenUpdating = True
ActiveSheet.ScrollArea = "A1:EG250"
ActiveSheet.Protect Password:=""
End Sub
Viele Grüße
Dietmar aus Aachen


Beiträge aus den Excel-Beispielen zum Thema "Leere Zeilen bzw. Spalten ausblenden"