Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Zeilen ausblenden wenn Bedingung erfüllt ist

VBA - Zeilen ausblenden wenn Bedingung erfüllt ist
26.08.2017 08:45:24
niklas
Hallo ihr Lieben,
ich würde mich freuen, wenn ihr mir bei folgendem Problem helfen könntet:
Ich habe ein Tabellenblatt. In diesem Tabellenblatt kann man unter der Zelle AW9 eine Zahl zwischen 1 und 3 auswählen. Je nach dem welche Zahl ich auswähle, erscheint in der Spalte O in den jeweiligen Zeilen das Wort "ausblenden".
Beispiel: Wenn ich die Zahl 1 auswähle, dann erscheint in den Zeilen 15 bis 17 in der Spalte O das Wort "ausblenden", wenn ich die Zahl 2 auswähle, dann erscheint in den Zeilen 22 bis 27 in der Spalte O das Wort "ausblenden".
Das Makro soll jetzt letztendlich jede Zeile, in der Spalte O, in der das Wort "ausblenden" steht, ausblenden.
Das habe ich auch - nach langen recherchieren und ausprobieren - mit folgendem makro hinbekommen:
Sub ausblenden()
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 15).End(xlUp).Row
If Cells(i, 15).Value = "ausblenden" Then
Rows(i).EntireRow.Hidden = True
End If
Next i
Application.ScreenUpdating = True
Range("j8").Select
End Sub
Wenn ich die Zahl 1 auswähle, und das makro ausführe, dann blendet mir excel die Zeilen 15 bis 17 in der Spalte O auch richtig aus.
Mein Problem besteht jetzt darin, dass wenn ich danach die Zahl 2 auswähle und das makro ausführe, ich erst per Hand alle Zeilen einblenden muss, damit mir excel dann die richtigen Zeilen wieder ausblendet.
Anbei habe ich meine Testdatei mal angefügt.
Ich hoffe ihr versteht mein Problem und könnt mir weiterhelfen!
Viele Grüße
Niklas
https://www.herber.de/bbs/user/115780.xlsm
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Autofilter
26.08.2017 08:48:22
Hajo_Zi
Halo Niklas,
warum Makro? Benutze Autofilter.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
AW: Autofilter
26.08.2017 08:55:15
niklas
Hallo Hajo,
vielen Dank für deine schnelle Antwort.
Ich würde das ganze gerne per makro ausprobieren.
Hast du diesbzgl. eine Idee?
Viele Grüße
Niklas
AW: Autofilter
26.08.2017 09:00:52
Hajo_Zi
Hallo Niklas,
Rows(i).EntireRow.Hidden = Cells(i, 15).Value = "ausblenden
Gruß Hajo
Anzeige
AW: Autofilter
26.08.2017 09:11:04
niklas
Und an welcher Stelle muss ich das in meinem makro einfügen?
Könntest du mir das komplette makro mal durchgeben?
Vielen Dank!
AW: Autofilter
26.08.2017 09:19:23
Hajo_Zi
an der gleiche wo Deins steht, Du kennst Dich ja mit VBA aus und da ist Dir ja klar das kein If benötigt wird.
Gruß Hajo
Anzeige
AW: Autofilter
26.08.2017 09:35:18
niklas
Ich stecke - was vba angeht - noch in den kinderschuhen. Das sind meine ersten Versuche.
habe deine Anmerkung jetzt eingearbeit und komme zu folgendem makro:
Sub ausblenden()
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 15).End(xlUp).Row
If Cells(i, 15).Value = "ausblenden" Then
Rows(i).EntireRow.Hidden = Cells(i, 15).Value = "ausblenden"
End If
Next i
Application.ScreenUpdating = True
Range("j8").Select
End Sub
Allerdings führt das nicht zum Ziel. Was habe ich falsch gemacht?
Viele Grüße
Niklas
Anzeige
mein Tipp nwar wohl nicht ok
26.08.2017 09:43:45
Hajo_Zi
Gut meinen Tipp zu If möchtest Du nicht umsetzen. Zu Deinem Code musst Du den Fragen der Dir das vorgeschlagen hat.
Ich bin dann raus, da meine Tipps nicht umgesetzt werden.
Gruß Hajo
AW: mein Tipp nwar wohl nicht ok
26.08.2017 10:09:48
niklas
Hallo Hajo,
wenn ich das if weglasse, dann lautet der code:
Sub ausblenden()
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 15).End(xlUp).Row
Cells(i, 15).Value = "ausblenden"
Rows(i).EntireRow.Hidden = Cells(i, 15).Value = "ausblenden"
Next i
Application.ScreenUpdating = True
Range("j8").Select
End Sub
Das funktioniert leider auch nicht.
Den Code habe ich mir selbst überlegt, daher kann ich keinen fragen.
Viele Grüße
Niklas
Anzeige
AW: mit Case
26.08.2017 09:26:22
hary
Moin
Du brauchst keine Formeln in SpalteO. Einzig, du musst die Dorpdownliste in AW9 in eine andere Zelle setzen. Bei Null wird diese mit ausgeblendet. Noch besser ist es wenn das du das orkshet_Change Ereigniss nutz. Das startet gleich bei Aenderung der jetzigen Zelle AW9.
Aber hier erstmal zum verstehen
Sub ausblenden()
Application.ScreenUpdating = False
Rows("8:28").Hidden = False'--aerst alle einblenden
Select Case Range("AW9")
Case 0: Rows("8:28").Hidden = True
Case 1: Rows("15:28").Hidden = True
Case 2: Rows("22:28").Hidden = True
End Select
End Sub

gruss hary
Anzeige
AW: VBA - Zeilen ausblenden wenn Bedingung erfüllt ist
26.08.2017 09:54:40
Gerd
Hallo, Hary folgend ins Modul der Tabelle:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Steuerzelle As Range
Set Steuerzelle = Range("AW1")'ANPASSEN
If Target.Address  Steuerzelle.Address Then Exit Sub
Application.ScreenUpdating = False
Rows("8:28").Hidden = False
Select Case Steuerzelle.Value
Case 0 To 2: Rows(CStr(8 + Steuerzelle.Value * 7) & ":28").Hidden = True
End Select
Set Steuerzelle = Nothing
End Sub
Gruß Gerd
Anzeige
AW: VBA - Zeilen ausblenden wenn Bedingung erfüllt ist
26.08.2017 10:39:44
niklas
Vielen lieben Dank für eure Hinweise!
Habe es jetzt mit folgendem Makro hinbekommen:
Sub ausblenden()
Application.ScreenUpdating = False
Rows("1:30").Hidden = False
For i = 1 To Cells(Rows.Count, 15).End(xlUp).Row
If Cells(i, 15).Value = "ausblenden" Then
Rows(i).EntireRow.Hidden = True
End If
Next i
Application.ScreenUpdating = True
Range("j8").Select
End Sub
Das reicht für meine Zwecke :)
Danke :)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA: Zeilen ausblenden, wenn Bedingung erfüllt ist


Schritt-für-Schritt-Anleitung

Um Zeilen in Excel auszublenden, wenn eine bestimmte Bedingung erfüllt ist, kannst du ein einfaches VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, um dies zu erreichen:

  1. Öffne Excel und lade das Arbeitsblatt, in dem du die Zeilen ausblenden möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul ein: Klicke im Menü auf Einfügen und wähle Modul.

  4. Kopiere und füge folgenden Code ein:

    Sub ausblenden()
       Application.ScreenUpdating = False
       Rows("1:30").Hidden = False ' Alle Zeilen zuerst einblenden
       For i = 1 To Cells(Rows.Count, 15).End(xlUp).Row
           If Cells(i, 15).Value = "ausblenden" Then
               Rows(i).EntireRow.Hidden = True
           End If
       Next i
       Application.ScreenUpdating = True
       Range("J8").Select
    End Sub
  5. Schließe den VBA-Editor und kehre zu deinem Arbeitsblatt zurück.

  6. Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle ausblenden und klicke auf Ausführen.

Nun werden die Zeilen, in denen in Spalte O das Wort "ausblenden" steht, automatisch ausgeblendet.


Häufige Fehler und Lösungen

  • Das Makro funktioniert nicht: Stelle sicher, dass die Spalte, die du überprüfst (in diesem Fall Spalte O oder 15. Spalte), korrekt ist.
  • Zeilen werden nicht angezeigt: Überprüfe, ob die Zeilen vorher manuell ausgeblendet wurden. Das Makro blendet nur die Zeilen aus, die bereits als "ausblenden" markiert sind.
  • Excel gibt eine Fehlermeldung aus: Achte darauf, dass du keine falschen Bereichsangaben machst. Stelle sicher, dass die Zelle, die du abfragst, tatsächlich existiert.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch die Autofilter-Funktion in Excel nutzen:

  1. Wähle die Zelle aus, in der sich deine Dropdown-Liste befindet.
  2. Gehe zu Daten > Filter und wähle die entsprechenden Filteroptionen.
  3. Filtere nach dem Wert "ausblenden", um nur die gewünschten Zeilen anzuzeigen.

Diese Methode ist schnell und benötigt kein VBA, ist aber nicht so flexibel wie das VBA-Makro.


Praktische Beispiele

Hier sind einige Beispiele, wie du das Makro anpassen kannst:

  • Zeilen ausblenden basierend auf einer Dropdown-Auswahl:

    Sub ausblenden()
       Application.ScreenUpdating = False
       Rows("1:30").Hidden = False
       Select Case Range("AW9").Value
           Case 1: Rows("15:17").Hidden = True
           Case 2: Rows("22:27").Hidden = True
           Case 3: Rows("8:14").Hidden = True
       End Select
       Application.ScreenUpdating = True
    End Sub
  • Automatisches Ausblenden bei Änderung der Zelle:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("AW9")) Is Nothing Then
           Call ausblenden
       End If
    End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um das Flackern des Bildschirms beim Ausblenden der Zeilen zu vermeiden.
  • Teste dein Makro gründlich, um sicherzustellen, dass es in allen Fällen wie gewünscht funktioniert.
  • Nutze Kommentare im Code, um die Funktionsweise deines Makros zu dokumentieren. Dies hilft dir, wenn du das Makro später erneut verwendest oder anpasst.

FAQ: Häufige Fragen

1. Wie kann ich Zeilen ausblenden, wenn die Bedingung erfüllt ist, ohne ein Makro zu verwenden?
Du kannst die Autofilter-Funktion nutzen, um die Zeilen nach bestimmten Kriterien zu filtern.

2. Was ist der Unterschied zwischen Rows(i).EntireRow.Hidden = True und Rows(i).Hidden = True?
Beide Methoden blenden Zeilen aus, aber die erste Methode ist spezifischer und bezieht sich auf die gesamte Zeile.

3. Kann ich das Makro so einstellen, dass es automatisch beim Öffnen der Datei ausgeführt wird?
Ja, indem du den Code in das Workbook_Open-Ereignis einfügst, kannst du das Makro beim Öffnen der Datei automatisch ausführen lassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige