Excel - Leere Zeilen ausblenden?


23.07.2020, 11:47

Mit dem Filter wird es nicht aktualisiert... leider :(


23.07.2020, 11:50

*zum zeigen was ich meine mit "es wird nicht aktualisiert, wenn ich ein neues Feld eingeblendet werden soll, es aber durch den Filter nicht aktualisiert..."*

6 Antworten

Dritter Anlauf:

Private Sub Worksheet_Change(ByVal Target As Range)
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To letztezeile
    If Range("A" & i & ":A" & i).Value = 0 Then
        Range("A" & i & ":A" & i).EntireRow.Hidden = True
    Else
        Range("A" & i & ":A" & i).EntireRow.Hidden = False
    End If
Next
End Sub
Woher ich das weiß:Hobby

VBA Entwicklertools öffnen, und auf Tabelle1 Doppelklicken und die 2 Zeilen Sub und End Sub ersetzen dur das hier:

Private Sub Worksheet_Change(ByVal Target As Range)
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To letztezeile
    If Range("A" & i & ":A" & i).Value = 0 Then 

Range("A" & i & ":A" & i).EntireRow.Hidden = False
  Else
Range("A" & i & ":A" & i).EntireRow.Hidden = True
Next
End Sub
Woher ich das weiß:eigene Erfahrung

deka046 
Fragesteller
 23.07.2020, 13:25

Vielen Dank für deine Mühe,

Es kommt zwar eine Fehler-Meldung wenn ich meine Formel ändern will, aber ich denke ich habe eine einfachere Lösung für das ganz gefunden. :)

2
geri3d  23.07.2020, 13:26
@deka046

Das kannst du auch nicht als „Formel“ eingeben, das ist ein VBA Script. Hast du auf deinem Excel.

1
DanKirpan  23.07.2020, 13:27
@deka046

der Fehler entsteht weil der If-teil nicht geschlossen wird, da fehlt ein "End if" vor dem Next

2
deka046 
Fragesteller
 23.07.2020, 13:27
@geri3d

Jaja das weiss ich schon, aber es kam eine Fehlermeldung und das VBA Scribt öffnete sich von selbst...

1
geri3d  23.07.2020, 13:29
@DanKirpan

Das ist mir in der Eile passiert weil ich es on the Fly innerhalb 160 sekunden (Danke GF) fixen musste da ist dann etwas durcheinandergeraten sein. Kann dir gern noch mal das Script bearbeitet zukommen lassen, bei mir klappt das problemlos.

1
DanKirpan  23.07.2020, 13:35
@geri3d

Nicht nötig, in meiner Testtabelle läuft es ebenfalls problemlos, nachdem das End if dazukam.

2
geri3d  23.07.2020, 13:40
@DanKirpan

Auf die Idee es schnell zu korrigieren brachte mich Hannes62a (thx an der Stelle), weil ich mir dann Gedanken gemacht habe wie du die Zeilen wieder eingeblendet bekommst.

2
geri3d  23.07.2020, 13:25

Ein kleiner Fehler, mein script blendet fatalerweise nur gefüllte Zeilen aus, tausche das „True“ durch „False“ aus und umgekehrt bei den 2 Zeilen die die Zeile auf Hidden stellen.

Noch zu erwähnen dass du die Spalte anpassen must.

2

Wenn du dir in den Entwicklertools mit VBA ein kleines Programm schreiben könntest, das bei Änderungen automatisch das Sheet nach leeren Zellen durchgeht und diese mit der Visibleeigenschaft ausblenen.

Ich habe das noch nie probiert und weiss nicht ob eine einzelne Zelle das unterstützt.

Ist aber warscheinlich eher umständlich, besser den Trick mit Bedingter Formatierung und weiße Schrift mit weißem Hintergrund.

Wenn VBA für dich ein komplettes Fremdwort ist kann ich dir unter die Arme greifen nur kenne ich mich eben besser mit VBA aus und kaum mit Formeln.

Hab grad gelesen Zeile!! Ja das geht fix.

Woher ich das weiß:eigene Erfahrung

deka046 
Fragesteller
 23.07.2020, 11:44

Danke für deine Antwort,

Aber ich denke nicht das ich irgenwelche Programme umschreiben kann...

Und da die Formel mir nur ein leeres Feld anzeigt, habe ich hauptsächlich leere Felder, aber kann diese nicht ausblenden. :(

1
geri3d  23.07.2020, 12:37
@deka046

Es ist keine Hexerei. Ich versuch das mal in Quelltext zu fassen und erklär dir wie du es einfügen kannst.

Ich schreibe dir dann eine neue Antwort, gib mir ein bisschen Zeit, sollte ich flux zusammengeschustert bekommen.

1

Grundsätzlich ist die geri3d's Idee mit dem Makro, das auf das Change Ereignis reagiert, nicht schlecht. Hat aber ein paar Fallstricke. Das Change Ereignis wird nur ausgelöst, wenn die Zelle manuell geändert wird. Es reagiert nicht darauf, wenn sich der Wert einer Zelle per Formel ändert. Und in diesem Fall müsste das Change-Ereignis auch aus der Quelltabelle, also der Pendenzenliste heraus gesteuert werden.

Ich würde die Aufgabe so lösen, dass ich ein Makro zum Ein-/Ausblenden der Zeilen an das Worksheet_Activate Ereignis hänge. Zur Sicherheit kann man noch einen Refresh Button spendieren. Letzteres ist aber vermutlich gar nicht nötig, es sei denn, es gibt Bezüge in andere Dateien.

Der Code lässt sich noch deutlich verbessern. Probier mal folgenden Code, der im Codebereich Deiner Auswertungstabelle stehen muss. Wenn Du dann auf das Blatt wechselst, wird die Ansicht automatisch aktualisiert.

Private Sub Worksheet_Activate()

letztezeile = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
On Error GoTo Fehler

For i = 1 To letztezeile
 Rows(i).Hidden = (Cells(i, 2) = "")
Next

Fehler:
Application.ScreenUpdating = True
On Error GoTo 0
End Sub

Funktioniert es?

Gruß

Hannes

Wenn Du die Formel aus der 2. Tabelle in alle folgenden Zeilen kopiert hast, wird auch das Ergebnis entsprechend angezeigt.

Solange Du in der 2. Tabelle die Zeilen ausgeblendet hast, kannst Du sie selbstverständlich nicht sehen bzw. erst wenn Du sie wieder eingeblendet hast.

Ansonsten ist die Formel korrekt.

Du kannst für das Ein- und Ausblenden ein Makro anlegen.