Leerzeilen automatisch durch Makro ausblenden

Hallo!

Ich habe in excel 2007 eine Arbeitsmappe mit einem Dateneingabeblatt und verschiedenen Auswertungsblättern. In den Auswertungsblättern werden über eine Formel nur bestimmte Zeilen mit Inhalt gefüllt. Die leeren Zeilen möchte ich innerhalb des Auswertungsblattes automatisch über ein Makro ausblenden. Zum Makro selbst habe ich einem Forum bereits dieses Makro gefunden:

Dim nRow As Long
Dim nLastrow As Long

Application.ScreenUpdating = False

ActiveCell.SpecialCells(xlLastCell).Select
nLastrow = ActiveCell.Row

Cells(1, 1).Select

For nRow = 1 To nLastrow
If Cells(nRow, 2).Value = „“ Then 'Zelle A in aktueller Zeile auf Inhalt überprüfen
Rows(nRow).Delete
End If
Next
Application.ScreenUpdating = True

Bis zum VBA-Fenster komme ich, aber dann verlässt mich sämtliches Wissen über Makros…

Wie schaffe ich es, dass das Makro automatisch (=ohne Anlegen und Betätigen einer Schaltfläche)beim Öffnen des Auswertungsblattes ausgeführt wird und meine Auswertungen auch nach weiteren Dateneingaben aktuell sind?

Wie schaffe ich es, dass das Makro nur für einen bestimmten Bereich des Arbeitsblattes ausgeführt wird? (In den ersten 13 Zeilen des Blattes befindet sich administratives Geplänkel und Überschriften, die immer vorhanden sein sollen.)

Vielen Dank für eure hoffentliche schnelle Hilfe!

Ich habe in excel 2007 eine Arbeitsmappe mit einem
Dateneingabeblatt und verschiedenen Auswertungsblättern. In
den Auswertungsblättern werden über eine Formel nur bestimmte
Zeilen mit Inhalt gefüllt. Die leeren Zeilen möchte ich
innerhalb des Auswertungsblattes automatisch über ein Makro
ausblenden. Zum Makro selbst habe ich einem Forum bereits
dieses Makro gefunden:

Hallo Anjinha,

du willst Zeilen nur ausblenden? Also nicht Zeilen löschen wie in deinem Code?

Den Namen „Dateneingabe“ mußt du anpassen. Es wird im jeweiligen Auswertungsblatt überprüft ob Ax leer ist, wenn ja wird die Zeile ausgeblendet.

In das Modul DieseArbeitsmappe

Option Explicit
'
Private Sub Workbook\_SheetActivate(ByVal Sh As Object)
If Sh.Name "Dateneingabe" Then Call Auswerten(Sh)
End Sub

In ein Standardmodul wie z.B. Modul1

Option Explicit
'
Sub Auswerten(wks As Worksheet)
Dim Zei As Long, Anz As Long
Application.ScreenUpdating = False
wks.UsedRange.EntireRow.Hidden = False
Anz = wks.Cells(Rows.Count, 1).End(xlUp).Row
For Zei = 14 To Anz
 If wks.Cells(Zei, 1) = "" Then Rows(Zei).Hidden = True
Next Zei
Application.ScreenUpdating = True
End Sub

Gruß
Reinhard

Hallo Reinhard!

Vielen Dank schon mal für deine schnelle Antwort!

Ich habe noch nicht ganz verstanden, wie ich die Skripts in die verschiedenen Module einfüge…

Bei meinen ersten Experimenten hat das ganze außerdem die Fehlermeldung „Fehler beim Kompilieren - Sprungmarke oder Anweisungsende erwartet“ angezeigt.

Kannst du mich da noch mal kurz Unterstützen?

Anjinha

Hallo Anjinha,

Ich habe noch nicht ganz verstanden, wie ich die Skripts in
die verschiedenen Module einfüge…

mit Alt+F11 erscheint der Vb-Editor. Links sieht du dein Projekt (erkennst du am Mappennamen). Darunter sind die Bestandteile des Projektes. Ggfs. mußt du wie in Windows üblich noch auf das Pluszeichen vor den Namen klicken um alles zu sehen.

In das Modul von „DieseArbeitsmappe“ bzw. "Modul1 kommst du durch Doppelklick auf die Namen.
Existiert kein „Modul1“, dann oben Einfügen—Modul.

Bei meinen ersten Experimenten hat das ganze außerdem die
Fehlermeldung „Fehler beim Kompilieren - Sprungmarke oder
Anweisungsende erwartet“ angezeigt.

Merk dir bitte grundsätzlich dabei auch immer die Codezeile zu zeigen wo ein Fehler auftrat.

Abgesehen davon, ich habe den Code getestet, lief fehlerfrei.

Gruß
Reinhard

Hallo!

Nachdem auf der Arbeit erst ein paar Tage wegen anderen Dingen Land unter war, bin ich jetzt dazu gekommen, die Tipps endlich umzusetzen. Bisher keine Fehlermeldung, aber die Leerzeilen sind auch nicht verschwunden…

Kann es daran liegen, dass die Zellen im Auswertungsblatt Formeln enthalten und daher nur optisch leer sind?

Oder habe ich den Code vielleicht irgendwo nicht richtig angepasst? (An welchen Stellen muss ich spezifische Dinge wie Namen von Arbeitsblättern und die zu prüfenden Zellen eintragen?)

Vielen Dank im Voraus für eure Ratschläge.

Anjinha

Nachdem auf der Arbeit erst ein paar Tage wegen anderen Dingen
Land unter war, bin ich jetzt dazu gekommen, die Tipps endlich
umzusetzen. Bisher keine Fehlermeldung, aber die Leerzeilen
sind auch nicht verschwunden…

Kann es daran liegen, dass die Zellen im Auswertungsblatt
Formeln enthalten und daher nur optisch leer sind?

Hallo Anjinha,

lade mal, ggfs verkürzte Mappe hoch wo der Code nicht klappt mit FAQ:2606

Gruß
Reinhard

http://www.hostarea.de/server-01/Januar-08bc6600a1.xls

http://www.hostarea.de/server-01/Januar-08bc6600a1.xls

hallo Irmtraud,

der Code:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name „aktuelle Akquiseliste“ Then Call Auswerten(Sh)
End Sub

gehört in „DieseArbeitsmappe“!
Also verschiebe ihn dorthin.

Er bewirkt folgendes, ist das gerade aktivierte Blatt NICHT das Blatt „aktuelle Akquiseliste“ dann wird die Prozedur Auswerten(Sh) aufgerufen.

Diese Prozedur Auswerten() überprüft im aktiven Blatt alle Werte in Spalte A ab Zeile 14 bis zur letzten gefüllten Zelle in A ob ein Wert darin steht. Wenn nein wird die entsprechende zeile ausgeblendet.

ist es das was du möchtest?

Gruß
Reinhard

Hallo Reinhard!

Beim Verschieben des Codes in Diese Arbeitsmappe ist ein Fehler aufgetreten: Anweisungsende erwartet. Laufzeitfehler aufgetreten. Zeile 167. Automatisierungsserver kann Objekt nicht erstellen.

Was soll mir das sagen und was kann ich dagegen tun?

Und noch eine grundsätzliche Frage: Sollte der von dir vorgeschlagene Code wirklich das Blatt „atuelle Akquiseliste“ beinhalten? Denn Auswerten wird nur durchgeführt, wenn aktuelle Aquiseliste nicht aktiv ist und es werden nur im aktiven Baltt die Leerzeilen ausgebledet, also niemals in aktuelle Akquiseliste… (Grundsätzlich sollen in den Blättern aktuelle Akquiseliste, Zusagen, Absagen und Aktivität der letzten Wochen die Leerzeilen ausgeblendet werden. In Dateneingabe und den zwei Blättern zum Honorarvolumen sollen diese bleiben.)

Vielen Dank für deine Hilfe!

Anjinha (seit Kurzem auch bekannt als Irmtraud :wink: