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

Forumthread: Rows Hidden

Rows Hidden
27.02.2018 03:20:32
Daniel
Geschätzte Freunde des Excel
Folgender Code weigert sich einfach, das zu tun, was ihm meiner Meinung nach beauftragt worden ist. Es geht darum, dass er bei einem bestimmten Zellwert Zeilen ausblenden müsste:
Private Sub Worksheet_Change(ByVal Target As Range)
'Blendet die Korrekturrechner I-III sowie weitere Teile automatisch aus)
'schaltet "Bremsen" aus
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Korrekturrechner I
If WorksheetFunction.Sum(Sheets("RT").Range("D18")) = 0 And WorksheetFunction.Sum(Sheets("   _
_
_
RT").Range("D19")) = 0 Then
Sheets("RT").Rows("17:19").EntireRow.Hidden = True
Else
Sheets("RT").Rows("17:19").EntireRow.Hidden = False
End If
'Korrekturrechner II
If WorksheetFunction.Sum(Sheets("RT").Range("D26:G26")) = 0 Then
Sheets("RT").Rows("25:26").EntireRow.Hidden = True
Else
Sheets("RT").Rows("25:26").EntireRow.Hidden = False
End If
'Überschussverteilung
If Sheets("RT").Range("D28") = 0 Then
Sheets("RT").Rows("29:31").EntireRow.Hidden = True
Else
Sheets("RT").Rows("29:31").EntireRow.Hidden = False
End If
'Korrekturrechner III
If WorksheetFunction.Sum(Sheets("RT").Range("H33:K33")) = 0 Then
Sheets("RT").Rows("32:33").EntireRow.Hidden = True
Else
Sheets("RT").Rows("32:33").EntireRow.Hidden = False
End If
'schaltet "Bremsen" ein
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Woran könnte es liegen? Die einzelnen Codesequenzen abgespielt funktionieren. Ich sehe da echt nicht mehr durch.
Danke für eure Inputs.
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rows Hidden
27.02.2018 03:36:12
Rainer
Hallo Daniel,
keiner weiß was in deinem Blatt steht. Die banale Antwort ist: deine If-Schleifen erzeugen andere Resultate als erwartet.
Aber um die Fehlersuche zu erleichtern mach ich es meist so:
Ändere:

'Korrekturrechner I
If WorksheetFunction.Sum(Sheets("RT").Range("D18")) = 0 And WorksheetFunction.Sum(Sheets("   _
_
_
_
RT").Range("D19")) = 0 Then
Sheets("RT").Rows("17:19").EntireRow.Hidden = True
Else
Sheets("RT").Rows("17:19").EntireRow.Hidden = False
End If
zu:
'Korrekturrechner I
Test1 = WorksheetFunction.Sum(Sheets("RT").Range("D18"))
Test2 = WorksheetFunction.Sum(Sheets("RT").Range("D19"))
If Test1 = 0 and Test2 = 0 Then
Sheets("RT").Rows("17:19").EntireRow.Hidden = True
Else
Sheets("RT").Rows("17:19").EntireRow.Hidden = False
End If
So kannst du die Zwischenschritte einfacher verfolgen und sehen, wo Abweichungen auftreten. Übersichtlicher ist es zudem auch.
Welchen Sinn hat es im übrigen, aus einer Zelle Range("D18") eine Summe zu bilden?
Gruß,
Rainer
Anzeige
AW: Rows Hidden
27.02.2018 03:42:18
Daniel
Hallo Rainer
Danke für die hilfreiche Antwort. Die Sache ist: Es ist eine riesige Arbeitsmappe mit ziemlich viel Code, diese Mühe will ich niemandem zumuten. Gehe ich in zumindest richtig der Annahme, dass du codemässig auf den ersten Blick keinen groben Schnitzer siehst, sondern der Fehler auf der Ebene der Resultate zu suchen ist?
Ja, das mit dem Range stimmt völlig, es war eben noch ein Bereich damit gemeint, das habe ich vergessen anzupassen.
Beste Grüsse - Daniel
Anzeige
AW: Rows Hidden
27.02.2018 03:57:48
Daniel
Hurra, Morgenstund' hat Gold im Mund! Die Lösung war, dass ich auch fälschlicherweise davon ausging, dass die Änderung von Zahlen anhand einer Formel auch ein Change-Ereignis ist, was natürlich nicht stimmt. Ich habe nun den identischen Code in der anderen Tabelle platziert und es funktioniert nun einwandfrei.
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel ausblenden mit VBA


Schritt-für-Schritt-Anleitung

Um Zeilen in Excel mit VBA auszublenden, kannst du den folgenden Code verwenden. Dieser Code reagiert auf Änderungen in bestimmten Zellen und blendet entsprechende Zeilen ein oder aus:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    ' Beispiel zum Ausblenden von Zeilen
    If WorksheetFunction.Sum(Sheets("RT").Range("D18")) = 0 And _
       WorksheetFunction.Sum(Sheets("RT").Range("D19")) = 0 Then
        Sheets("RT").Rows("17:19").EntireRow.Hidden = True
    Else
        Sheets("RT").Rows("17:19").EntireRow.Hidden = False
    End If

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Dieser Code blendet die Zeilen 17 bis 19 aus, wenn die Summe der Zellen D18 und D19 gleich 0 ist. Du kannst diesen Ansatz für andere Zeilen und Bedingungen anpassen.


Häufige Fehler und Lösungen

Ein häufiger Fehler beim Ausblenden von Zeilen mit entirerow.hidden ist, dass die Bedingungen in den If-Anweisungen nicht wie erwartet funktionieren. Hier sind einige Tipps zur Fehlersuche:

  1. Überprüfe die Bedingungen: Stelle sicher, dass die Zellen, auf die du zugreifst, die erwarteten Werte haben. Du kannst Zwischenergebnisse in Variablen speichern, um besser nachvollziehen zu können, wo der Fehler liegt:

    Test1 = WorksheetFunction.Sum(Sheets("RT").Range("D18"))
    Test2 = WorksheetFunction.Sum(Sheets("RT").Range("D19"))
  2. Change-Ereignis: Beachte, dass Änderungen durch Formeln kein Change-Ereignis auslösen. Wenn Werte durch Formeln geändert werden, wird der Code möglicherweise nicht ausgeführt.

  3. Verwendung von Application.ScreenUpdating: Setze diese Optionen zurück, um Probleme bei der Aktualisierung des Bildschirms zu vermeiden.


Alternative Methoden

Neben dem Einsatz von VBA gibt es auch andere Möglichkeiten, um Zeilen auszublenden:

  • Filter verwenden: Du kannst AutoFilter einsetzen, um nur die gewünschten Zeilen anzuzeigen und andere auszublenden.
  • Manuelles Ausblenden: Markiere die Zeilen, die du ausblenden möchtest, klicke mit der rechten Maustaste und wähle „Zeilen ausblenden“.

Praktische Beispiele

Hier sind einige praktische Beispiele für das Ausblenden von Zeilen:

  1. Einfaches Ausblenden:

    Sheets("Sheet1").Rows("1:10").EntireRow.Hidden = True
  2. Ausblenden basierend auf Bedingungen:

    If Cells(1, 1).Value = "Hide" Then
       Rows("2:5").EntireRow.Hidden = True
    End If
  3. Mehrere Zeilen gleichzeitig ausblenden:

    Sheets("Sheet1").Rows("5:10").EntireRow.Hidden = True

Tipps für Profis

  • Verwende With-Anweisungen: Diese helfen, den Code lesbarer und effizienter zu gestalten.

    With Sheets("RT")
       .Rows("17:19").EntireRow.Hidden = .Range("D18").Value = 0 And .Range("D19").Value = 0
    End With
  • Debugging-Tools nutzen: Verwende das Debug.Print-Kommando, um Variablenwerte in der Konsole zu überprüfen.

  • Code modularisieren: Schreibe Funktionen für wiederverwendbare Codeabschnitte, um die Lesbarkeit zu verbessern.


FAQ: Häufige Fragen

1. Warum funktioniert mein Code nicht? Der Code könnte aufgrund falscher Zellreferenzen oder unerwarteter Werte nicht funktionieren. Überprüfe auch, ob das Change-Ereignis korrekt ausgelöst wird.

2. Wie kann ich mehrere Zeilen gleichzeitig ausblenden? Du kannst Rows("10:20").EntireRow.Hidden = True verwenden, um mehrere Zeilen in einem Schritt auszublenden.

3. Was mache ich, wenn ich Zeilen wieder einblenden möchte? Verwende Rows("10:20").EntireRow.Hidden = False, um die ausgeblendeten Zeilen wieder sichtbar zu machen.

4. Gibt es eine Möglichkeit, Spalten auszublenden? Ja, du kannst EntireColumn.Hidden verwenden, um ganze Spalten auszublenden, ähnlich wie bei Zeilen. Beispiel: Sheets("Sheet1").Columns("A").EntireColumn.Hidden = True.

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