Clever-Excel-Forum

Normale Version: VBA - Zellenbereich in Zeile wenn leer dann Zeile ausblenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
In Bestimmten Zellenbereich jeder Zeile wenn dort leer ist, dann ganze Zeile ausblenden.

Bekomme das nicht so ganz hin… “bisschen“ Hilfe könnte ich gebrauchen  17

Zitat:Sub autoAus()
Dim zeile As Integer
zeile = 2
For zeile = 2 To 6
    If Range("B" & zeile).Value = "" Then '= "0" Then
        Rows(zeile).Hidden = True
            Else
    End If
Next zeile
End Sub

Anbei die Datei: [attachment=42534]


Danke in Voraus,

78
  Niko
Hallo,

der Ansatz ist falsch. Wenn du Zeilen ausblenden / Löschen willst, muss die Schleife von unten nach oben laufen. Also: For Zeile = 6 to 2 Step -1
Danke für die Antwort Smile



doch es funktioniert nicht wie es soll, habe die Datei mit der vorgeschlagenen Änderung eingefügt.

Zeilen sind nicht bis 6 sondern bis 13, sry mein Fehler Sad



Im Grunde werden damit alle Zeilen ausgeblendet die in spalten Bereich B2:B13 kein wert beinhalten.

Brauche aber ein ganzen Zeilen Bereich.



Beispiel: wenn von B2 bis D2 kein wert vorhanden dann soll nur die Zeile 2 ausgeblendet werden.

In der nächsten Zeile B3:D3 wenn auch dort kein wert dann soll nur die Zeile 3 ausgeblendet werden.

Das bis Zeile 13.

Datei:[attachment=42536]

Zitat:Sub autoAus()
Dim zeile As Integer
zeile = 2
For zeile = 13 To 2 Step -1
    If Range("B" & zeile).Value = "" Then '= "0" Then
        Rows(zeile).Hidden = True
            Else
    End If
Next zeile
End Sub
Hallo,

versuche es mal so:

Code:
Option Explicit

Sub autoAus()
    Dim intZeile As Integer
    Dim intLeer As Integer
    Dim rngZelle As Range
    For intZeile = 13 To 2 Step -1
        intLeer = 0
        For Each rngZelle In Range(Cells(intZeile, 2), Cells(intZeile, 4))
            If rngZelle.Value = "" Then
                intLeer = intLeer + 1
            End If
        Next rngZelle
        If intLeer = 3 Then
            Rows(intZeile).Hidden = True
        End If
    Next intZeile
End Sub
Hi

Code:
Sub autoAus()
Dim zeile As Integer

For zeile = 2 To 13
   If Join(Application.Transpose(Application.Transpose(Cells(zeile, 2).Resize(1, 3).Value)), "") = "" Then Rows(zeile).Hidden = True
Next zeile
End Sub
Für Ausblenden muss die Schleife nicht Rückwärts.(kann aber)

Gruß Elex
Beide funktionieren Smile
und von beiden habe ich etwas dazugelernt...danke Smile
Hallo

meine Frage ist ob mir evtl. jemand sagen könnte wie hier im Auszug,
der Bereich B - D angesprochen wurde damit ich es nur auf die Zellen in in Spalte D
anpassen kann .

Transpose(Cells(zeile, 2).Resize(1, 3).Value)), "")

Vielen Dank Euch
Hi,

Cells(zeile, 2) bezeichnet Spalte B (die 2. Spalte) in Zeile zeile. Resize(1, 3) verändert die Größe des angegebenen Bereichs, so dass er am Ende 1 Zeilen hoch und 3 Spalten breit ist.

Wenn du also Spalte "D" (die 4. Spalte) ansprechen willst, verwendest du entweder Cells(zeile, 4) und lässt das Resize weg, oder du nimmst Cells(zeile, 2).Offset(0, 2) Damit sprichst du die Zellle zwei Zellen rechst von Spalte B an.

Wenn du tatsächlich nur eine Zelle brauchst, dann kannst du auch gleich auf den auf das ganze Drumherum verzichten und verwendest direkt If Cells(zeile, 4) = "" Then Rows(zeile).Hidden = True oder auch If IsEmpty(Cells(zeile, 4)) Then Rows(zeile).Hidden = True
Moin,

wenn ich Helmut da noch ergänzen darf:
Helmut schrieb:wenn du tatsächlich nur eine Zelle brauchst, dann kannst du auch gleich auf den auf das ganze Drumherum verzichten ...
... und den Autofilter verwenden.

Viele Grüße
derHöpp
Danke euch beiden

Danke euch beiden