Clever-Excel-Forum

Normale Version: Zeilen ausblenden nach erfüllter Bedingung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich weiß, bei der Überschrift werden viele jammern, das wurde schon x-fach besprochen und erklärt. Dem stimme ich zu. Ich habe jetzt wirklich einige Stunden damit verbracht, sämtliche Foren-/Hilfen etc. zu durchforsten, finde aber leider verwirrenderweise nirgend die Antwort auf mein Problem, von daher, da dieses Forum hier am aktivsten und kompetentesten erscheint, stelle ich meine Frage hier :):

Problem, Excel 2016, VBA Makro:

Ich habe eine sehr große Datei und in einem Blatt (einfachheitshalber Datenbank) sind ein paar 100 Zahlen, die nur dort eingegeben werden. Diese Werte werden in die anderen Blätter übernommen und damit gerechnet.

Es gibt in den einzelnen anderen Blättern dann diverse Auflistungen dieser Zahlen aus der Datenbank. Wenn in der Datenbank z.B. im Blatt Alpha Werte übernommen werden z.B. au Zeilen 20-30, aber nur Zeile 15 einen Wert enthält, blendet es die anderen Zeilen in Alpha aus.

Bei der geringen Menge hatte ich mit folgendem Makro kein Problem, nur, wenn ich ein Blatt, sagen wir Berta habe, und dort sind um die 100 Zeilen auszublenden, falls der Wert 0 ist, steigt Excel aus.

Ich hatte mehrere Makro-Möglichkeiten gesehen, aber da sich die Zahlen, welche aus der Datenbank in Berta Spalte C ändern können, habe ich es folgendermaßen versucht - und wie gesagt, mit wenigen Zeilen ist es kein Problem. Kann man das ganze nicht verkürzen? Denn ich habe hier natürlich von C27-C92 - also auch ziemlich viel Text.


Code:
Private Sub Worksheet_Calculate()

   Static svntC27 As Variant
   Static svntC28 As Variant
   Static svntC29 As Variant
   Static svntC30 As Variant

  If svntC27 <> Range("C27").Value Then
       svntC27 = Range("C27").Value
       Rows(27).Hidden = (svntC27 = 0)
   End If
 
  If svntC28 <> Range("C28").Value Then
       svntC28 = Range("C28").Value
       Rows(28).Hidden = (svntC28 = 0)
   End If
 
  If svntC29 <> Range("C29").Value Then
       svntC29 = Range("C29").Value
       Rows(29).Hidden = (svntC29 = 0)
   End If
   
 If svntC30 <> Range("C30").Value Then
       svntC30 = Range("C30").Value
       Rows(30).Hidden = (svntC30 = 0)
   End If

End Sub





Danke vorab, ein Verzweifelter
Hallo,

ersetze Dein Makro durch dieses:
Private Sub Worksheet_Activate()
Dim i As Long
For i = 27 To 30
Rows(i).Hidden = Cells(i, 3).Value = 0
Next i
End Sub
Gruß Uwe
Halleluhja, gepriesen seist du, der mich endlich erleuchtet - und mein Excel nicht mehr zum Absturz bringt :)

besten Dank, genau nach sowas habe ich gesucht.

Gruß Bo