VBA: Workbook_BeforePrint - danach Zellen wieder automatisch einblenden
Hi!
Kurze Frage:
Unter
Private Sub Workbook_BeforePrint(Cancel As Boolean)
rufe ich den Code
Dim Wiederholungen As Integer
For Wiederholungen = 5 To 134
If Cells(Wiederholungen, 1) <> "" _
Or Cells(Wiederholungen, 1) = "blank" Then
Else
Rows(Wiederholungen).EntireRow.Hidden = True
End If
Next
auf.
Damit werden zum Drucken leere Zeilen in dem zuvor definierten Bereich ausgeblendet.
Nach dem Druckvorgang sollen diese wieder automatisch eingeblendet werden.
(Code --> Rows("5:134").EntireRow.Hidden = False)
Wie muss ich dazu vorgehen?
Ciao
Tom
Antwort schreiben
Antwort 1 von Hajo_Zi vom 18.09.2021, 10:10 Options
Hallo Tom,
eine Aktion nach Druck gibt es nicht. Das geht nur, wenn Du das Ducken über Makro auslöst.
Gruß Hjo
Antwort 2 von Tomschi vom 18.09.2021, 12:30 Options
Hallo Hajo!
Schade, da kann man wohl nichts machen.
Danke für Deinen Hinweis!
Allseits ein schönes Wochenende wünscht
Tom
Antwort 3 von nighty vom 18.09.2021, 13:28 Options
hi tom ^^
deine if then structur verschliesst sich jeder logic :-))
lass das else mal weg und tausche die operatoren
statt
<>
=
lieber
=
<>
ueber ein auszuloesendes makro mach ich mir mal gedanken :-))
gruss nighty
Antwort 4 von Tomschi vom 21.09.2021, 07:24 Options
Hi Nighty!
Danke für Deinen Input!
Ich kann Dir leider nicht ganz folgen.
Was genau ist dabei der Unterschied?
Zitat:
<>
=
lieber
=
<>
Anmerkung:
Der Code stammt ursprünglich aus
http://www.supportnet.de/threads/1224939(Antwort 11)
Ciao
Tom
Antwort 5 von nighty vom 21.09.2021, 10:50 Options
hi tom ^^
Sub IfElseThen()
If Cells(Wiederholungen, 1) <> "" Or Cells(Wiederholungen, 1) = "blank" Then 'es wird eine von zwei bedingungen gefordert
'trifft eine von zwei bedingungen zu (durch das OR festgelegt)dann fuehre an dieser position etwas durch,wo NICHTS beschrieben ist
Else
'trifft keine von zwei angegebenen bedingungen zu, fuehre hier etwas aus,was in der naechsten zeile beschrieben ist
Rows(Wiederholungen).EntireRow.Hidden = True
End If
End Sub
'du solltest nun erkennen das vor dem else keine anweisungen beschrieben sind
'daher das else weglassen ,da es nicht gebraucht wird
'wenn das else weggelassen wird, muessen bei deiner forderung die operatoren geaendert werden werden
'aus dem ungleich bzw <> wird durch wegfall der else structur das gegenteil gefordert,also gleich bzw =
'aus dem gleich bzw = wird durch wegfall der else structur das gegenteil gefordert,also ungleich bzw <>
Sub IfElseThen()
'nach deinem macro wuerde es dann so aussehen
If Cells(Wiederholungen, 1) = "" Or Cells(Wiederholungen, 1) <> "blank" Then
Rows(Wiederholungen).EntireRow.Hidden = True
End If
End Sub
'wobei so glaube ich es so nicht gefordert ist
'vielleicht eher so ?
Sub IfThenOhneElse()
If Cells(Wiederholungen, 1) = "" Or Cells(Wiederholungen, 1) = "blank" Then
Rows(Wiederholungen).EntireRow.Hidden = True
End If
End Sub
Antwort 6 von nighty vom 21.09.2021, 10:51 Options
hi all ^^
gruss vergessen *huch*
gruss nighty :-))
Antwort 7 von Tomschi vom 21.09.2021, 11:13 Options
Hallo Nighty!
Stimmt, das "Else" könnte man weglassen und die Operatoren müssten dann entsprechend "umgedreht" werden.
Ist wohl aus Faulheit passiert. ;-)
Manchmal tritt die Bedingung vom dem "Else" (in einer anderen Datei) zu. Dann ist es Einfacher den gesamten Code zu kopieren und die nicht benötigten Teile zu löschen.
Somit spare ich mir die Operatoren zu tauschen.
Der Code läuft somit etwas länger, aber damit kann ich derzeit noch leben.
Trotzdem vielen Dank für Deine Anmerkungen!
Tschau
Tom
P.S.:
Schreibt man Deinen Nickname mit "n" oder "N"?
Antwort 8 von nighty vom 21.09.2021, 13:33 Options
hi tom ^^
namen werden groß geschrieben
ich schreibe aber alles klein in foren :-))
zu deiner anfrage des druckereignisses
muss es denn unbedingt das ereignis sein bzw nach dem drucken ?
du koenntest doch ein makro mit druckauftrag aufnehmen und dahinter deine weiteren befehle auffuehren :-))
gruss nighty
Antwort 9 von Tomschi vom 21.09.2021, 14:42 Options
Hallo Nighty!
Das Problem ist nicht unbedingt das Drucken selbst.
--> siehe auch Vorschlag von Hajo (Antwort 1)
Mein größtes Problem ist die Seitenansicht.
Sobald man die Seitenansicht/Durckvorschau aktiviert, werde die leeren Zeilen ausgeblendet. Das ist auch so gewollt, jedoch werden nach dem Schließen der Seitenansicht die Leerzeilen nicht automatisch eingeblendet.
Somit muss man händisch die Leerzeilen wieder einblenden.
Beispiel:
User erfaßt Daten --> Seitenansicht --> Leerzeilen sind ausgeblendet --> Schließen der Seitenansicht --> User muss vor dem weiteren Erfassen die ausgeblendeten Leerzeilen wieder per Hand einblenden.
Das manuelle Aktivieren den "Einblendevorganges" wollte ich mir/dem User eben ersparen.
Natürlich könnte ich ein Makro zum Drucken basteln, welches genau diese Anforderungen entspricht, jedoch ist der User damit wahrscheinlich überfordert und er würde wiederum die den "normalen" Druckvorgang starten.
Diesen dann auch noch zu unterbinden, ist - glaube ich - zu viel Arbeit.
Ich muss mich wohl damit abfinden, dass man dies so nicht umsetzen kann.
Vielen DANK für die Zeit, die Du in meine Fragestellungen investiert hast.
Ciao
Tom