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
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 