3.4k Aufrufe
Gefragt in Tabellenkalkulation von tomschi Mitglied (879 Punkte)
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

9 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Tom,

eine Aktion nach Druck gibt es nicht. Das geht nur, wenn Du das Ducken über Makro auslöst.

Gruß Hjo
0 Punkte
Beantwortet von tomschi Mitglied (879 Punkte)
Hallo Hajo!

Schade, da kann man wohl nichts machen.
Danke für Deinen Hinweis!

Allseits ein schönes Wochenende wünscht

Tom
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von tomschi Mitglied (879 Punkte)
Hi Nighty!

Danke für Deinen Input!
Ich kann Dir leider nicht ganz folgen.

Was genau ist dabei der Unterschied?

<>
=

lieber

=

<>


Anmerkung:
Der Code stammt ursprünglich aus
www.supportnet.de/threads/1224939
(Antwort 11)

Ciao

Tom
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

gruss vergessen *huch*

gruss nighty :-))
0 Punkte
Beantwortet von tomschi Mitglied (879 Punkte)
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"?
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von tomschi Mitglied (879 Punkte)
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
...