online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Tomschi vom 18.09.2021, 10:06 Options

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

Ähnliche Themen

Zellen verlinkung in Ecxel (VBA)
o.display2  23.07.2008 - 55 Hits - 6 Antworten

Zellen über VBA? kopieren...
Alexsusi  23.08.2008 - 36 Hits - 3 Antworten

VBA+Zellen makieren
jockel01  03.09.2008 - 2 Hits - 1 Antwort

VBA Symbolleisten aus-/einblenden bei unterschiedlichen Einstellungen
oiehl  26.10.2008 - 19 Hits - 2 Antworten

Ausgeblendete Zellen einblenden
da_manuu  10.02.2009 - 137 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 09:21:55 2026