Leere Zeilen ausblenden mit VBA

Bild

Betrifft: Leere Zeilen ausblenden mit VBA
von: Michael
Geschrieben am: 23.11.2015 14:03:36

Hallo,
ich suche nach einer Möglichkeit beim öffnen einer Excel Datei bei leeren Zellen in der Spalte B die gesamte Zeile auszublenden. Dazu habe ich diesen Code gefunden:

Private Sub Workbook_Open()
Dim rngBlnk As Range
On Error Resume Next 'in case no blanks are present...
Set rngBlnk = Range("B1:B4600").SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not rngBlnk Is Nothing Then
    Debug.Print rngBlnk.Address()
    rngBlnk.EntireRow.Hidden = False
End If
End Sub
leider funktioniert es nicht weil ich scheinbar Formeln in den Zellen hab. Die formeln sollen bestehen bleiben, da ich hiermit Werte aus anderen Dateien rüber hole falls vorhanden. Wie müsste ich den Code anpassen damit trotz der Formeln leere Zellen (ohne Werte) und damit die gesamte Zeile ausgeblendet wird.
Gruß
Michael

Bild

Betrifft: AW: Leere Zeilen ausblenden mit VBA
von: Rudi Maintaire
Geschrieben am: 23.11.2015 14:16:42
Hallo,
dann musst du alle Zellen auf "" prüfen.

Sub aaa()
  Dim r As Range, rBlank As Range
  For Each r In Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
    If r = "" Then
      If rBlank Is Nothing Then
        Set rBlank = r
      Else
        Set rBlank = Union(rBlank, r)
      End If
    End If
  Next
  If Not rBlank Is Nothing Then rBlank.EntireRow.Hidden = True
End Sub
Gruß
Rudi

Bild

Betrifft: AW: Leere Zeilen ausblenden mit VBA
von: Michael
Geschrieben am: 23.11.2015 14:34:19
Danke!

Bild

Betrifft: AW: Leere Zeilen ausblenden mit VBA
von: Daniel
Geschrieben am: 23.11.2015 14:17:17
Hi
merke: Zellen die eine Formel enthalten, sind nie leer.
wenn das Formelergebnis der Leerstring "" enthält diese Zelle technisch gesehen einen Text.
am besten ist, du verwendest den Autofilter, denn dieser unterscheidet nicht zwischen echten Leerzellen und Zellen mit dem Formelergebnis "".
der Code wäre dann:

Private Sub Workbook_Open()
ActiveSheet.Usedrange.Autofilter Field:=2, Criteria1:="<>"
End Sub

den ursprünglichen Code könntest du verwenden, wenn die Formeln in Spalte B entweder den Leerstring oder ansonsten eine Zahl bzw Datum als Ergebnis ausgeben, dann könnten die .SpecialCells diesen unterschied erkennen und die Zellen mit Text ausblenden:
Set rngBlnk = Range("B1:B4600").SpecialCells(xlCellTypeFormulas, 2)

wobei die 2 hier für Text steht und das .SpecialCells hier alle Zellen findet, die eine Formel enthalten die einen Text als Ergebnis haben.
andersrum geht's natürlich auch, dh wenn deine Formeln normalerweise Texte ausgeben, dann müssest du die Formeln so umgestalten, dass statt dem Leerstring die Zahl 0 ausgeben wird.
dann könntest du alle Zeilen mit Zahl in Spalte B ausblenden:
Set rngBlnk = Range("B1:B4600").SpecialCells(xlCellTypeFormulas, 1)

die 1 steht hier für Zellen mit Zahl als Inhalt.
Gruß Daniel

Bild

Betrifft: AW: Leere Zeilen ausblenden mit VBA
von: Michael
Geschrieben am: 23.11.2015 14:34:49
Danke für die ausführliche Erläuterung!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Leere Zeilen ausblenden mit VBA"