Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Zellenbereich in Zeile wenn leer dann Zeile ausblenden
#1
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:
.xlsm   Leere_Zeilen_wenn_Zellen.xlsm (Größe: 18,06 KB / Downloads: 1)


Danke in Voraus,

78
  Niko
Antworten Top
#2
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
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
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:
.xlsm   Leere_Zeilen_wenn_Zellen2.xlsm (Größe: 18,13 KB / Downloads: 4)

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
Antworten Top
#4
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
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Niko
Antworten Top
#5
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
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • Niko
Antworten Top
#6
Beide funktionieren Smile
und von beiden habe ich etwas dazugelernt...danke Smile
Antworten Top
#7
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
Antworten Top
#8
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
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 2 Nutzer sagen Danke an HKindler für diesen Beitrag:
  • derHoepp, BrianMolko1980
Antworten Top
#9
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
[-] Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:
  • HKindler
Antworten Top
#10
Danke euch beiden

Danke euch beiden
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste