Private Sub Workbook_BeforePrint

Hallo Ihr Wissenden,
habe mal wieder ein Problem mit einer Programmierung.
In einer Datei, werden Faxe verwaltet und immer, wenn ein Mitarbeiter auf das Symbol DRUCKEN
drückt, wird ein Makro angestoßen., der bestimmte Zellen in ein anderes
Tabellenblatt kopiert. (ist zur Kontrolle, welches Fax wie oft im Monat gedruckt wurde)
Das habe ich über Workbook - BevorePrint realisiert.
Demnächst soll es aber so sein, daß die Zelle G8 ausgefüllt werden muß.
Das Fax darf nicht ausgedruckt werden, bis in der Zelle G8 etwas eingetragen wurde.
mein Probelm ist jetzt:
wenn die Zelle G8 leer ist, dann bekomme ich zwar meine Fehlermeldung und das darauffolgende Makro
wird nicht ausgeführt, Aber der PC druckt trotzdem ein leeres Fax aus.
Wie kann ich den Ausdruck solange unterbinden, bis der Benutzer in G8 etwas eingetragen hat.

Würde mich über jede Hilfe freuen.
Danke im Voraus.
Roland Stützer

Performence:
WinXP Proff.
Excel 2003

Habe mal zum besseren Verständnis ein Teil des Makros mit abgeschrieben.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

fred = Range(„G8“)

If fred = 0 Then
MsgBox („Entscheidung fehlt - Achtung Zelle ist leer“)

Else

Application.ScreenUpdating = False

Sheets(„Übersicht Faxe Regio-Bahn“).Select
Range(„A2“).Select
ActiveSheet.Unprotect „801824“
Selection.EntireRow.Insert
ActiveCell.FormulaR1C1 = „=R[1]C+1“
Range(„B2“).Select
Sheets(„Fax Rangierauftrag“).Select
Range(„B11“).Select
Selection.Copy
Sheets(„Übersicht Faxe Regio-Bahn“).Select
Range(„D2“).Select
Selection.PasteSpecial Paste:=xlValues
Range(„B2“).Select
Sheets(„Fax Rangierauftrag“).Select
Range(„B9“).Select
Selection.Copy
Sheets(„Übersicht Faxe Regio-Bahn“).Select
Selection.PasteSpecial Paste:=xlValues

usw…

End If
End Sub

ich will jetzt hier nicht groß rumprobieren und leere Seiten ausdrucken *g*
Aber hast Du schon mal versucht ein exit sub in den if fred = 0 Bereich mit reinzuschreiben?

Hier ist übrigens noch ein Makro, das mir gerade in die Hände fällt:

Sub FilePrint()
 If BeforePrintCheck = True Then Dialogs(wdDialogFilePrint).Show
End Sub

Sub FilePrintDefault()
 If BeforePrintCheck = True Then ActiveDocument.PrintOut Background:=False
End Sub

Private Function BeforePrintCheck() As Boolean
 If ActiveDocument.ComputeStatistics(wdStatisticPages) = 1 Then
 BeforePrintCheck = True
 Else
 MsgBox "Sie können nicht drucken. Das Dok darf nur eine Seite umfassen."
 End If
End Function

Das Makro prüft, ob der Druck maximal eine Seite hat und bricht andernfalls ab.
Die Prüfung kannst Du natürlich auch umtexten…
Quelle:
http://mypage.bluewin.ch/reprobst/WordFAQ/AppEvent.htm

habe mal wieder ein Problem mit einer Programmierung.
In einer Datei, werden Faxe verwaltet und immer, wenn ein
Mitarbeiter auf das Symbol DRUCKEN
drückt, wird ein Makro angestoßen., der bestimmte Zellen in
ein anderes
Tabellenblatt kopiert. (ist zur Kontrolle, welches Fax wie oft
im Monat gedruckt wurde)
Das Fax darf nicht ausgedruckt werden, bis in der Zelle G8
etwas eingetragen wurde.
mein Probelm ist jetzt:
wenn die Zelle G8 leer ist, dann bekomme ich zwar meine
Fehlermeldung und das darauffolgende Makro
wird nicht ausgeführt, Aber der PC druckt trotzdem ein leeres
Fax aus.
Wie kann ich den Ausdruck solange unterbinden, bis der
Benutzer in G8 etwas eingetragen hat.

Hi Roland,

Option Explicit

Private Sub Workbook\_BeforePrint(Cancel As Boolean)
Dim wsQuelle As Worksheet, wsZiel As Worksheet
Set wsQuelle = Sheets("Fax Rangierauftrag")
Set wsZiel = Sheets("Übersicht Faxe Regio-Bahn")
With wsZiel
 If wsQuelle.Range("G8") = 0 Or wsQuelle.Range("G8") = "" Then
 Cancel = True
 MsgBox "Entscheidung fehlt - Achtung Zelle " & wsQuelle.Name & "!G8 ist leer"
 Exit Sub
 Else
 Application.ScreenUpdating = False
 .Unprotect "801824"
 .Range("A2").EntireRow.Insert
 .Range("A2").FormulaR1C1 = "=R[1]C+1" 'ggfs .Range("A2") = .Range("A3")
 .Range("D2") = wsQuelle.Range("B11")
 .Range("??") = wsQuelle.Range("B9")
 'usw…
 Application.ScreenUpdating = True
 End If
End With
End Sub

Gruß
Reinhard

Hallo Reinhard,

das war’s. Bin begeistert. Danke für die Hilfe

Hallo munichfreak,

war nicht genau das, was ich meinte.
Kann es aber trotzdem in einer anderen Datei verwenden.
Auch Dir, danke für die Hilfe.

Beste Grüße Roland