Hallo, Leute,
ich habe folgendes Problem (da leider meine Excel-VBA-Kenntnisse eher sehr bescheiden sind).
Ich benötige für eine Excel-Datei eine Möglichkeit, dass vor dem Drucken der Windows-User abgefragt wird und entsprechend bei einem bestimmten User für ein Register (mehrere Seiten, Druckbereich ist festgelegt, über eine benutzerdefinierte Ansicht) Zeilen ausgeblendet werden und nicht mitgedruckt werden sollen. Danach soll das Arbeitsblatt wieder auf die ursprüngliche Ansicht zurückgestellt werden.
Soweit habe ich es, denke ich, auch schon gut hinbekommen, allerdings soll die Anzahl der zu druckenden Exemplare abgefragt werden.
Da der Beginn, den ich verwende "Private Sub Workbook_BeforePrint(Cancel As Boolean)", bereits den Druck an sich auslöst, wird die Abfrage, wieviel Exemplare gedruckt werden sollen, zweimal angezeigt, obwohl man eine Anzahl drin hat und auf OK geklickt hat.
Ich möchte aber die Abfrage nur einmal sehen und wenn eine Anzahl drin ist, soll die Anzahl der Exemplare gedruckt werden. Außerdem soll, wenn kein Zahlwert enthalten ist, oder auf "Abbrechen" geklickt wird, die gesamte Aktion (das Drucken) abgebochen werden (mit der Meldung, siehe Code).
Anbei der Code, ich hoffe, jemand von euch VBA-Cracks kann mir helfen - in der Hilfe und im Online-Forum (und bei der Suche allgemein im Netz) habe ich leider nichts entsprechendes gefunden, was mir auf die Sprünge hilft. Der Code ist im Objekt "Diese Arbeitsmappe".
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim AnzahlDrucke As String
Dim User As String
On Error GoTo Test_Err
If Environ("User") Like "*muster*" = True Then ActiveWorkbook.CustomViews("Test 728 _
ausgeblendete Zeilen").Show
Worksheets("test 728").Activate
AnzahlDrucke = Application.InputBox("Bitte Anzahl der gewünschten Drucke angeben", "Anzahl _
_
der gewünschten Drucke", "1")
ActiveWindow.SelectedSheets.PrintOut , Copies:=AnzahlDrucke, Collate:=True
Exit Sub
Test_Err:
Select Case Err.Number
Case 1004
MsgBox "Sie haben keine Zahl eingegeben oder 'Abbrechen' angeklickt. Die Aktion wird _
abgebrochen."
If AnzahlDrucke = "Falsch" Then Cancel = True
If AnzahlDrucke = "" Then Cancel = True
Exit Sub
End Select
Resume Next
If Application.UserName Like "*meier*" = False Then ActiveWorkbook.CustomViews("Test728"). _
_
Show
End Sub
Das Problem ist vermutlich die Zeile " ActiveWindow.SelectedSheets.PrintOut , Copies:=AnzahlDrucke, Collate:=True", die dürfte eigentlich nicht hier stehen, ich weiß aber nicht, wie ich sonst die Anzahl der Drucke abfragen soll.
Ich hoffe, ich habe mich verständlich ausgedrückt (und keinen Quatsch geschrieben). Vielen Dank schon einmal im Voraus für eure Hilfe,
bis dann, Grüsse aus Berlin an alle Excel-/VBA-"Freaks",
Tanja