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

Forumthread: VBA Zeilen ausblenden wenn 0

VBA Zeilen ausblenden wenn 0
17.12.2008 10:14:17
AndyV
Hallo,
ich VBA-Laie brauche einen Code für TabBlatt4.
In diesem Blatt wird in Spalte A11:A100 über
eine WENN-Formel in jeder Zelle eine 0 oder nichts
angezeigt.
Die Zeilen mit 0 sollen automatisch ausgeblendet
werden.
Bitte um Hilfe
Gruß
Andy
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeilen ausblenden wenn 0
17.12.2008 10:29:47
Armin
Hallo Andy,
dazu brauchst Du noch ein Event. z.B. Tabelle aufrufen, in bestimmten Zellen Werte eingeben usw..
Oder du nimmtst das Makro:

Sub Makro1()
Dim Rx As Range
For Each Rx In Worksheets("Tabelle1").Range("A10:A100")
If Rx.Value = 0 Then Rx.EntireRow.Hidden = True
Next
End Sub


und ruftst es über Makro aufrufen in der Standard-Oberfläche oder einen Butto erstellen und das Makro zuweisen.
Gruß Armin

Anzeige
AW: VBA Zeilen ausblenden wenn 0
17.12.2008 10:29:00
Matthias
Hallo
probiers mal so:

Private Sub Worksheet_Calculate()
Dim loX As Long
For loX = 11 To 100
If Cells(loX, 2).Value = "0" Then Rows(loX).EntireRow.Hidden = True
Next
End Sub


Gruß Matthias

und damit es nicht so flackert ...
17.12.2008 10:40:00
Matthias
Hallo
hatte versehentlich Spalte B benutzt, sorry
hier nun mit Spalte A

Private Sub Worksheet_Calculate()
Dim loX As Long
Application.ScreenUpdating = False 'Bildschirmaktualisierung aus
For loX = 11 To 100
If Cells(loX, 1).Value = "0" Then Rows(loX).EntireRow.Hidden = True
Next
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder an
End Sub


Gruß Matthias

Anzeige
AW: und damit es nicht so flackert ...
17.12.2008 10:54:37
AndyV
Hallo,
bekomme folgende Meldung:
Laufzeitfehler "1004" Hiddeneigenschaft
If Cells(loX, 1).Value = "0" Then Rows(loX).EntireRow.Hidden = True
Gruß
Andy
steht der Code auch in der Tabelle ?
17.12.2008 11:06:00
Matthias
Hallo
Hast Du den Code auch in die entsprechenden Tabelle kopiert ? (nicht in ein Modul)
oder ist das Tabellenblatt geschützt ?
Gruß Matthias
Anzeige
AW: steht der Code auch in der Tabelle ?
17.12.2008 11:21:00
AndyV
Hallo Matthias,
der Code steht in Tab4
Nach der Fehlermeldung friert Excel komplett ein
und ich kann es nur über den Takmanager beenden.
Gruß
Andy
sehr seltsames Verhalten von Excel
17.12.2008 11:42:00
Excel
Hallo
Ich nutze hauptsächlich XL2000, da klappt das einwandfrei!
habe es jetzt mal mit XL2007 getestet, da bekomme ich einen Fehler
setzt ich an den Anfang On Error Resume Next, friert mir auch Excel ein. Mysteriös!
Da bin ich jetzt überfragt, sorry.
Lass es mal offen
Gruß Matthias
Anzeige
AW: sehr seltsames Verhalten von Excel
17.12.2008 13:02:21
Excel
Hallo Mathias und Andy,
das Ein-/Ausblenden löst in den neueren Excel.Version auch das Calculate-Ereignis aus.
Deshalb müssen die Ereignis-Prozeduren vorübergehend deaktiviert werden, damit Excel hier nicht in eine Endlos-Schleife bis zum Absturz gerät.
Mit folgender Anpassung sollte es funktionieren.
Gruß
Franz

Private Sub Worksheet_Calculate()
Dim loX As Long
Application.ScreenUpdating = False 'Bildschirmaktualisierung aus
Application.EnableEvents = False 'Ereignismakros deaktivieren
For loX = 11 To 100
Rows(loX).EntireRow.Hidden = Cells(loX, 1).Value = "0"
Next
Application.EnableEvents = True 'Ereignismakros aktivieren
Application.ScreenUpdating = True 'Bildschirmaktualisierung wieder an
End Sub


Anzeige
alles klar, Danke oT
17.12.2008 21:22:43
Matthias
AW: VBA Zeilen ausblenden wenn 0
17.12.2008 13:09:16
Rudi
Hallo,
das hier funzt unter WinXP/ ExcelXP einwandfrei:

Sub tt()
Dim i As Long
Application.ScreenUpdating = False
For i = 11 To 100
Rows(i).Hidden = Cells(i, 1) = 0
Next
Application.ScreenUpdating = True
End Sub


Gruß
Rudi

Anzeige
AW: VBA Zeilen ausblenden wenn 0
17.12.2008 13:32:38
Daniel
Hi
für sowas nimmt man den Autofilter in Calculate-Event:
(Code ins Modul des Tabellenblatts einfügen!)
da der Autofilter das Calculate-Event auch nochmal aufruft, und sich somit das Makro ständig selbst aufrufen würde (was zur dauerschleife führt), muss man das Aufrufen der Events unterbinden.
Bis Excel 2003 gabs hierfür die "Application.EnableEvents"-Eigenschaft, damit würde das Makro so aussehen:

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Range("A10:A100").AutoFilter Field:=1, Criteria1:="="
Application.EnableEvents = True
End Sub


allerdings wurde meines Wissens nach das Application.EnableEvents in Excel 2007 abgeschafft, dh. man muss diese Funktionalität mithilfe einer Variable selbst nachbauen
die Variable muss ausserhalb der der Prozedur, ganz oben unter Option Explicit dimensioniert werden:


Option Explicit
Dim EventsAus As Boolean
Private Sub Worksheet_Calculate()
If EventsAus Then Exit Sub
EventsAus = True
Range("A10:A100").AutoFilter Field:=1, Criteria1:="="
EventsAus = False
End Sub


wenn, analog dem normalen ausblenden die Filter-Markierungen nicht erscheinen sollen, kannst du das mit dieser Erweiterung in der autofilter-Zeile erreichen:
Range("A10:A100").AutoFilter Field:=1, Criteria1:="=", VisibleDropDown:=False
Gruß, Daniel

Anzeige
AW: VBA Zeilen ausblenden wenn 0
17.12.2008 15:00:07
Gerd
Hi,
"...allerdings wurde meines Wissens nach das Application.EnableEvents in Excel 2007 abgeschafft,..."
Quatsch, 11833 anrufen.
mfg Gerd
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel mit VBA ausblenden, wenn der Wert 0 ist


Schritt-für-Schritt-Anleitung

Um in Excel Zeilen auszublenden, wenn der Wert in einer bestimmten Zelle 0 ist, kannst Du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke Alt + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“.
    • Wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein:

    Sub ZeilenAusblenden()
       Dim i As Long
       Application.ScreenUpdating = False ' Bildschirmaktualisierung aus
       For i = 11 To 100
           Rows(i).Hidden = Cells(i, 1).Value = 0 ' Zeilen mit 0 ausblenden
       Next i
       Application.ScreenUpdating = True ' Bildschirmaktualisierung wieder an
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus:

    • Drücke Alt + F8, wähle „ZeilenAusblenden“ aus und klicke auf „Ausführen“.

Du kannst diesen Code auch in das Worksheet_Calculate-Ereignis einfügen, um die Zeilen automatisch auszublenden, wenn sich die Werte ändern.


Häufige Fehler und Lösungen

Ein häufiger Fehler, den Du möglicherweise bei der Verwendung von VBA zum Ausblenden von Zeilen in Excel bekommst, ist der Laufzeitfehler "1004". Hier sind einige Lösungen:

  • Fehlermeldung: „Hidden-Eigenschaft“:

    • Stelle sicher, dass der Code in der richtigen Tabelle (z.B. „Tab4“) und nicht in einem Modul platziert ist.
    • Prüfe, ob das Tabellenblatt geschützt ist.
  • Excel friert ein:

    • Wenn Excel bei der Ausführung des Codes einfriert, füge Application.EnableEvents = False am Anfang deiner Sub-Prozedur ein und setze es am Ende wieder auf True, um Endlosschleifen zu vermeiden.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, um Zeilen in Excel auszublenden, wenn der Wert 0 ist:

  1. Verwendung des Autofilters:

    Private Sub Worksheet_Calculate()
       Application.EnableEvents = False
       Range("A10:A100").AutoFilter Field:=1, Criteria1:="0" ' Filtere nach 0
       Application.EnableEvents = True
    End Sub
  2. Verwendung von Excel-Formeln: Du kannst auch die Formel =WENN(A1=0;"";A1) verwenden, um Zellen leer zu lassen, wenn der Wert 0 ist, und dann die Zeilen manuell oder über einen Filter ausblenden.


Praktische Beispiele

  • Beispiel 1: Ausblenden von Zeilen in Spalte A, wenn der Wert 0 ist.

    Private Sub Worksheet_Calculate()
       Dim loX As Long
       Application.ScreenUpdating = False
       For loX = 11 To 100
           If Cells(loX, 1).Value = 0 Then
               Rows(loX).EntireRow.Hidden = True
           End If
       Next loX
       Application.ScreenUpdating = True
    End Sub
  • Beispiel 2: Dynamisches Ausblenden von Zeilen, wenn der Wert 0 in Spalte B steht.

    Private Sub Worksheet_Calculate()
       Dim loX As Long
       Application.ScreenUpdating = False
       For loX = 11 To 100
           Rows(loX).Hidden = Cells(loX, 2) = 0 ' Spalte B
       Next loX
       Application.ScreenUpdating = True
    End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating: Dies verhindert das Flackern des Bildschirms, wenn Du mehrere Zeilen ausblendest.
  • Ereignisse deaktivieren: Nutze Application.EnableEvents = False, um Endlosschleifen zu vermeiden, insbesondere bei der Verwendung von Worksheet_Calculate.
  • Dynamisches Ausblenden: Überlege, ob Du Excel-Filter verwenden möchtest, um die Sichtbarkeit von Zeilen zu steuern, ohne VBA zu verwenden.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um nur bestimmte Zeilen auszublenden? Du kannst die Schleife so anpassen, dass sie nur durch bestimmte Zeilen iteriert, z.B. For i = 20 To 30.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code sollte in den meisten aktuellen Excel-Versionen funktionieren, während einige ältere Versionen möglicherweise Anpassungen erfordern.

3. Was tun, wenn ich die Zeilen später wieder einblenden möchte? Du kannst eine ähnliche Sub-Prozedur erstellen, die Rows(i).Hidden = False verwendet, um die Zeilen wieder einzublenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige