Registriert seit: 11.04.2014
Version(en): 2021
22.07.2021, 18:17
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2021, 18:18 von Glausius.)
Hallo, ich habe hier eine kleine Routine, wo das aktuelle ausgewählte Tabellenblatt auf einem auszuwählenden Drucker in einer einzustellenden Anzahl ausgedruckt werden kann/soll: Code: Private Sub CommandButton2_Click() If Application.Dialogs(xlDialogPrinterSetup).Show = False Then Exit Sub Anzahl = InputBox("Wieviele Exemplare?", "Druckauftrag", 1) ActiveWindow.SelectedSheets.PrintOut Copies:=Anzahl End Sub
Der "Abbrechen"-Button bei der Druckerauswahl funktioniert und beendet die Sub. Wenn aber bei der Inputbox der "Abbrechen"-Button benutzt wird, stürzt der Code ab. Wie und mit welcher Zeile kann ich diesen Vorgang abfangen bzw. behandeln - mit der Suche (auch im Internet) habe ich nichts gefunden, außer dass die Inputbox dann False zurückgibt. Wie und wo kann ich das in diesem Code verwenden?
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Registriert seit: 12.06.2020
Version(en): 2024, 365business
Probiers mal damit, Je nachdem ob generell eine Kopie gedruckt werden soll oder nicht.
if not isNumeric(Anzahl) then Anzahl = 1 oder if not isNumeric(Anzahl) then exit sub
ActiveWindow.SelectedSheets.PrintOut Copies:=Anzahl
Registriert seit: 11.04.2014
Version(en): 2021
22.07.2021, 18:41
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2021, 18:44 von Glausius.)
Hallo Ralf,
geht leider nicht - Excel malt die Zeile "Anzahl = InputBox("Wieviele Exemplare?", "Druckauftrag", 1)" gelb an und bringt die Fehlermeldung 13, Typen unverträglich!
Man muss doch irgendwie den Abbrechen-Button auswerten können ..... Hoffe auf weitere Vorschläge bzw. Lösungen!
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Registriert seit: 12.08.2019
Version(en): Office 365
Hallo,
beim Abbrechen wird ein "false" geliefert! Du musst die Variable als variant deklarieren und prüfen, ob ein Wahrheitswert, Text od. numerischer Wert vorliegt.
Grüße Sigi
00202
Nicht registrierter Gast
Hallo, probiere es mal so ( getestet): Code: Option Explicit Private Sub CommandButton2_Click() Dim Anzahl As String If Application.Dialogs(xlDialogPrinterSetup).Show = False Then Exit Sub Anzahl = InputBox("Wieviele Exemplare?", "Druckauftrag", 1) If StrPtr(Anzahl) = 0 Then MsgBox "Das war Abbrechen" ElseIf Anzahl = "" Then MsgBox "Das war OK, aber keine Eingabe" Else ActiveWindow.SelectedSheets.PrintOut Copies:=Anzahl End If End Sub
Die MsgBoxen kannst du natürlich auch rausnehmen.
Registriert seit: 11.04.2014
Version(en): 2021
Hallo, vielen Dank an alle Helfer! Mit Eurer Hilfe konnte ich das Problem lösen - der Code sieht jetzt so aus und funktioniert wie er soll: Code: Private Sub CommandButton2_Click() Dim Anzahl as Variant If Application.Dialogs(xlDialogPrinterSetup).Show = False Then Exit Sub Anzahl = InputBox("Wieviele Exemplare?", "Druckauftrag", 1) If Anzahl = Empty Then Exit Sub ActiveWindow.SelectedSheets.PrintOut Copies:=Val(Anzahl) End Sub
Jetzt kann ich beruhigt mein Feierabendbier genießen ....
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
23.07.2021, 06:50
(Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2021, 07:02 von RPP63.)
Moin! Zitat:wo das aktuelle ausgewählte Tabellenblatt … ausgedruckt werden kann/soll 1. Das aktuelle Blatt ist ActiveSheet, ActiveWindow.SelectedSheets geht zwar auch, wird aber nur bei einer Gruppierung benötigt. (Rekorder-Code?) 2. Wenn ich eine Zahl übergeben will, dann nehme ich nicht die InputBox- Funktion, sondern die Application.InputBox-Methode mit Type:=1. Damit ist sicher gestellt, dass nur eine Zahl oder False übergeben werden kann. 3. Da jede Zahl außer 0 in VBA True ist, kann man dies einfach so regeln: Code: Sub Test() Dim Anzahl As Long Anzahl = Application.InputBox("Wieviele Exemplare?", "Druckauftrag", 1, Type:=1) If Anzahl Then ActiveSheet.PrintOut Copies:=Anzahl Else MsgBox "Abbruch oder 0 eingegeben!" End If End Sub
4. Wie man sieht, ist Exit Sub meist überflüssig. Man könnte oben einfach den Else-Zweig weg lassen. Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Günter, warum nicht einfach so? Code: Private Sub CommandButton2_Click() Application.Dialogs(xlDialogPrint).Show End Sub
Gruß Uwe
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
23.07.2021, 17:34
(Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2021, 17:34 von RPP63.)
Noch einfacher wäre natürlich Strg+p Aber wer will sich schon mit so etwas profanem wie einer Benutzer-Oberfläche aka GUI auseinander setzen? Etwas selbst "programmiertes" gibt schließlich viel mehr her!
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 29.09.2015
Version(en): 2030,5
24.07.2021, 12:32
(Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2021, 13:31 von snb.)
Dieser Code reicht: Code: Private Sub CommandButton2_Click() y = Val(InputBox("Wieviele Exemplare?", "Druckauftrag", 1)) If y Then If Application.Dialogs(9).Show Then Activesheet.PrintOut , , y End Sub
|