Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wenn Zelle leer dann Zeile ausblenden

Wenn Zelle leer dann Zeile ausblenden
08.03.2018 08:34:59
Zoe401
Hallo, habe in meinem riesen Makro einen kleinen Abschnitt der nicht funktioniert, aber er meckert auch nicht. Es passiert einfach nichts.
Ich möchte, das wenn Cell(i, 1) leer ist, dass er die Zeile ausblendet.
Die Zeilen 19 bis 22 sind leer, werden aber nicht ausgeblendet:
das ist der Abschnitt im Makro:
Dim i As Byte
For i = 13 To 22
If Sheets("Zugversuch").Cells(i, 1) = "" Then
Rows(i).Hidden = True
End If
Next
Gruß,
Zoe
Anzeige

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Zelle leer dann Zeile ausblenden
08.03.2018 08:41:09
UweD
Hallo
kann es sein, das du dich auf einem anderen Blatt befindest?
    Dim i As Byte
    For i = 13 To 22
        If Sheets("Zugversuch").Cells(i, 1) = "" Then
            Sheets("Zugversuch").Rows(i).Hidden = True
        End If
    Next

LG UweD
Anzeige
AW: Wenn Zelle leer dann Zeile ausblenden
08.03.2018 08:44:25
Zoe401
Ne ich bin auf dem richtigen Blatt "Zugversuch".
Muss ich ein
Else
Rows(i).Hidden = False

noch dranhängen? Aber eigentlich doch nicht oder?
Es gibt auch keine Fehlermeldung?!
AW: Wenn Zelle leer dann Zeile ausblenden
08.03.2018 08:56:35
Niclaus
"die Zeilen (Zellen?) 19 bis 22 sind leer, werden aber nicht ausgeblendet"
Sind sie denn wirklich leer? Keine Formel? kein Leerschlag?
Grüsse Niclaus
Anzeige
Absolut leer!
08.03.2018 09:01:45
Zoe401
Absolut leer!
dann bitte Musterdatei
08.03.2018 09:03:28
UweD
hochladen
Referenzierungen sind dein Problem
08.03.2018 09:14:38
EtoPHG
Hallo Zoe,
Ich habe in letzter Zeit Threads von Dir mitverfolgt. Ich glaube du hast ein grundsätzliches Problem, mit dem Verständnis und der Umsetzung von Objekt-Referenzierungen in VBA. Du postest immer auch nur irgendwelche Codeschnipsel, die den Helfern keine Rückschlüsse auf den Code-Kontext erlauben. So ist in diesem erneuten Beispiel nicht klar wo dieser Code in deiner Mappe steht!
In einem (Standard)Modul, in DieserArbeitsmappe, in einem Tabelleblatt, in einer Userform? Das ist eminent wichtig.
In dem If Sheets("Zugvers... wird das Blatt mit Name "Zugversuch" referenziert. Je nachdem in welcher Klasse der Code kann das die Mappe in welcher der Code steht oder eine andere aktive Mappe sein. Rows(... ist nicht vollständig referenziert. Je nachdem in welcher Klasse der Code kann das das aktive Tabellenblatt oder das Tabellenblatt in dem der Code steht sein.
Darum nochmals die Bitte:
Bei deinem VBA Level, bitte so vollständige Angaben wie möglich oder noch besser eine Beispielmappe hochladen.
Gruess Hansueli
Anzeige
AW: Referenzierungen sind dein Problem
08.03.2018 09:23:54
Zoe401
Alles klar, tut mir leid, werde mir mehr Mühe geben.
Der Code steht unter meinem CommandButton1 unter Click
Da ich möchte wenn ich den Button Drücke meine ganzen Daten die ich auf meiner "Startseite" eingetragen habe auf die Seite "Zugversuch rüberkopiert werden. und die Zeilen die dann darunter leer bleiben sollen ausgeblendet werden, damit meine Tabell, welche unter den kopierten Daten steht aufrutscht.
Das bedeutet mein Sub fängt so an:
Private Sub CommandButton1_Click()
'Zugversuch
If CheckBox14.Value = True Then
dann kommt viel copy paste und if then end if
und das ende ist dann eben:
 Dim i As Byte
For i = 13 To 22
If Sheets("Zugversuch").Cells(i, 1) = "" Then
Rows(i).Hidden = True
End If
Next
End If
End Sub

Anzeige
AW: Referenzierung ist immer noch dein Problem
08.03.2018 10:22:22
EtoPHG
Hallo Zoe,
Es ist nicht (oder weniger) wichtig, wie deine Prozedur heisst, sondern viel mehr
in welcher Code-Klasse sie steht.
Ein Code kann wie weiter oben ausgeführt stehen in:
DieserArbeitsmappe
Tabellenblatt
Modul
Klassenmodul
Userform

Ich kann nur wieder raten:
Dein Code steht in einem Tabellenblatt, das ziemlich sicher nicht "Zugversuch" heisst.
Dein Code testet Zellen im Blatt "Zugversuch"
Dein Code blendet Zeilen im Tabellenblatt aus, in dem der Code steht, also nicht im Blatt "Zugversuch" !
Also: in welchem Tabellenblatt(-Klasse) steht deine CommandButton1_Click() ?
Gruess Hansueli
Anzeige
Die vollständige Referenzierung:
08.03.2018 10:29:26
EtoPHG
wäre dann so:
    Dim i As Long       ' Zeilen und Spaltereferenzen immer in LONG
With ThisWorkbook.Worksheets("Zugversuch")      ' im Blatt "Zugversuch"
For i = 13 To 22
.Rows(i).Hidden = (.Cells(i, 1) = "")  ' Aus/Einblenden Zeilen
Next i
End With
Gruess Hansueli
Anzeige
...
08.03.2018 09:25:15
Zoe401
Ach ja und es steht in Tabelle 1 (Startseite) weil mein CommandButton1 auf der Startseite ist
Also werden auf der Startseite Zeilen ausgeblendet
08.03.2018 10:23:29
EtoPHG

Danke, jetzt funktionierts!
08.03.2018 11:15:14
Zoe401
Oh man! Klar. Ich mach immer den gleichen Fehler! Dankeschön für die Hilfe, jetzt funktionierts!
Anzeige
Noch eine kleine Erweiterung!?
09.03.2018 11:20:20
Zoe401
Wenn ich zu dem Code noch sagen möchte, wenn er z.B. Zeile 13 hier ausblendet, möchte ich das Zeile 43 wieder eingeblendet wird? Gibt es einen gegenteiligen Befehl Unhide oder so etwas?
Dim i As Long
With ThisWorkbook.Worksheets("Zugversuch")
For i = 13 To 22
.Rows(i).Hidden = (.Cells(i, 1) = "")
.Rows(i+30).Unhide = (.Cells(i, 1) = "")
Next i
End With

Anzeige
AW: Noch eine kleine Erweiterung!?
09.03.2018 12:02:27
Daniel
Hi
Ausblenden mit .Hidden = True
Einblenden mit .Hidden = False
dh in deinem Fall:
entweder: .Rows(i+30).Unhide = (.Cells(i, 1) "")
oder: .Rows(i+30).Unhide = Not (.Cells(i, 1) = "")
Gruß Daniel
sorry, meinte natürlich
09.03.2018 12:08:20
Daniel
entweder:
.Rows(i).hidden = (.Cells(i, 1) = "")
.Rows(i+30).hidden = (.Cells(i, 1) "")
oder:
.Rows(i).hidden = (.Cells(i, 1) = "")
.Rows(i+30).hidden = Not (.Cells(i, 1) = "")
Gruß Daniel
Anzeige
AW: Noch eine kleine Erweiterung!?
09.03.2018 13:57:23
EtoPHG
Hallo Zoe,
Das es keinen .UnHide gibt ist ersichtlich aus:
  • Hidden = TRUE (Ausblenden) Hidden = FALSE (Einblenden)

  • aus der Intellisense Hilfe

  • aus den Eigenschaften im Objektkatalog

  • Ein Vergleich, wie (.Cells(i, 1) = "") gibt automatisch TRUE oder FALSE zurück
    Will ich die Kondition umkehren genügt Not (.Cells(i, 1) = "")
    Somit müsstest du in der Lage sein, deine (nicht vollständig beschriebenen) Anforderungen umzusetzen.
    Gruess Hansueli
    Anzeige
    Super, klar! Danke an euch beide!!! owT
    09.03.2018 15:20:48
    Zoe401
    Super, klar! Danke an euch beide!!!

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Zeilen in Excel ausblenden, wenn Zellen leer sind


    Schritt-für-Schritt-Anleitung

    Um in Excel Zeilen auszublenden, wenn eine bestimmte Zelle leer ist, kannst Du den folgenden VBA-Code verwenden. Dieser Code blendet die Zeilen 13 bis 22 aus, wenn die erste Zelle in diesen Zeilen leer ist:

    Private Sub CommandButton1_Click()
        Dim i As Long
        With ThisWorkbook.Worksheets("Zugversuch")
            For i = 13 To 22
                .Rows(i).Hidden = (.Cells(i, 1) = "")
            Next i
        End With
    End Sub

    Achte darauf, dass Du den Code in das richtige Modul einfügst (z.B. in das Modul des Tabelle "Startseite", wenn der Button dort ist).


    Häufige Fehler und Lösungen

    1. Fehler: Die Zeilen werden nicht ausgeblendet, obwohl sie leer sind.
      Lösung: Überprüfe, ob die Zellen wirklich leer sind. Manchmal können unsichtbare Zeichen oder Formeln in den Zellen vorhanden sein.

    2. Fehler: Das Blatt "Zugversuch" wird nicht gefunden.
      Lösung: Stelle sicher, dass das Tabellenblatt exakt so benannt ist, wie es im Code angegeben ist.

    3. Fehler: Das Skript funktioniert nicht, weil der Code in einem anderen Modul steht.
      Lösung: Der Code sollte in dem Modul stehen, das dem aktiven Blatt entspricht, oder vollständig qualifiziert werden.


    Alternative Methoden

    Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch Filter verwenden, um leere Zeilen auszublenden:

    1. Markiere die gesamte Tabelle.
    2. Gehe zu Daten > Filter.
    3. Klicke auf den Dropdown-Pfeil in der Spalte, die Du filtern möchtest, und wähle "Leere Zellen" ab.

    Diese Methode ist einfach und benötigt keine Programmierkenntnisse.


    Praktische Beispiele

    Wenn Du beispielsweise eine Liste hast, in der einige Einträge fehlen, kannst Du den oben genannten VBA-Code verwenden, um leere Zeilen automatisch auszublenden. Wenn Du jedoch möchtest, dass bestimmte Zeilen eingeblendet werden, wenn eine andere Zeile leer ist, kannst Du den Code wie folgt anpassen:

    Private Sub CommandButton1_Click()
        Dim i As Long
        With ThisWorkbook.Worksheets("Zugversuch")
            For i = 13 To 22
                .Rows(i).Hidden = (.Cells(i, 1) = "")
                .Rows(i + 30).Hidden = Not (.Cells(i, 1) = "")
            Next i
        End With
    End Sub

    Hier wird die Zeile 43 eingeblendet, wenn die Zeile 13 leer ist.


    Tipps für Profis

    • Verwende Long anstelle von Byte für Zeilen-Referenzen, um mögliche Überlaufprobleme zu vermeiden.
    • Nutze die With-Anweisung, um den Code zu optimieren und die Lesbarkeit zu erhöhen.
    • Wenn Du oft ähnliche Aufgaben hast, erstelle eine Funktion, die Du wiederverwenden kannst, um Zeit zu sparen.

    FAQ: Häufige Fragen

    1. Wie kann ich den VBA-Code anpassen, um mehrere Spalten zu überprüfen?
    Du kannst einfach die Bedingung im If-Statement anpassen, um mehrere Zellen zu überprüfen, z.B.:

    If Sheets("Zugversuch").Cells(i, 1) = "" And Sheets("Zugversuch").Cells(i, 2) = "" Then

    2. Gibt es eine Möglichkeit, leere Zeilen automatisch auszublenden, ohne Makros zu verwenden?
    Ja, Du kannst die Filter-Funktion in Excel nutzen, um leere Zeilen auszublenden, wie im Abschnitt "Alternative Methoden" beschrieben.

    3. Wie kann ich sicherstellen, dass meine Daten nicht verloren gehen, wenn ich Zeilen ausblende?
    Das Ausblenden von Zeilen entfernt sie nicht, sondern macht sie nur unsichtbar. Du kannst jederzeit die Zeilen wieder einblenden, indem Du die Zeilen auswählst und mit der rechten Maustaste auf „Einblenden“ klickst.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige