Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Nochmals Druckmakro | Herbers Excel-Forum


Betrifft: Nochmals Druckmakro von: WalterK
Geschrieben am: 22.11.2009 15:21:15

Hallo,

nochmals eine Frage zu meinem Druckmakro. Den Teil ab "With ActiveSheet" habe ich selbst dazugewurstelt.

Nach der MSG-Box kommt der Druckerdialog und da klappt es noch nicht ganz:
1.) Wenn ich im Druckerdialog einen anderen als den Standard-Drucker auswähle, passiert zuerst einige Zeit nichts und dann wird trotzdem mit dem Standard-Drucker gedruckt.

2.) Wenn ich Abbrechen anklicke, wird trotzdem gedruckt.

Sub BlattEins()
  Dim strActP As String, blnPrint As Boolean
  
  strActP = Application.ActivePrinter
  blnPrint = True
  
  If MsgBox("Ihr aktiver Drucker ist: " & strActP & vbLf & _
    "Möchten Sie die Druckaufträge mit diesem Drucker ausführen und haben Sie die ABNr erfasst  _
bzw. überprüft?", _
    vbInformation + vbYesNo, "Drucken") = vbNo Then
    
    blnPrint = Application.Dialogs(xlDialogPrinterSetup).Show
    
  End If
  
'  If blnPrint Then ActiveSheet.PrintPreview
  
  Application.ActivePrinter = strActP
With ActiveSheet
    .PageSetup.PrintArea = "A4:P47"
    .PageSetup.Orientation = xlPortrait
    .PrintOut
    End With
        Application.ScreenUpdating = False
    Range("A4:P162").Select
    ActiveSheet.PageSetup.PrintArea = "$A$4:$P$162"
    Range("G4").Select
    Application.ScreenUpdating = True
End Sub
Wer kann mir bitte helfen?

Servus, Walter

  

Betrifft: AW: Nochmals Druckmakro von: Daniel
Geschrieben am: 22.11.2009 15:49:05

Hi

naja, nach der Abfrage stellt du ja den ursprünglichen Drucker wieder ein und erst danach erfolgt der Befehl zum Ausdrucken.
der Befehl zum Ausdrucken wird IMMER ausgeführt, da vorher keine IF-Abfrage oder sonstige Prüfung auf Abbruch erfolgt.

ich habe die entsprechenden Stellen mal fett markiert:

Sub BlattEins()
  Dim strActP As String, blnPrint As Boolean
  
  strActP = Application.ActivePrinter
  blnPrint = True
  
  If MsgBox("Ihr aktiver Drucker ist: " & strActP & vbLf & _
    "Möchten Sie die Druckaufträge mit diesem Drucker ausführen und haben Sie die ABNr erfasst   _
_
bzw. überprüft?", _
    vbInformation + vbYesNo, "Drucken") = vbNo Then
    
    blnPrint = Application.Dialogs(xlDialogPrinterSetup).Show
    
  End If
  
'  If blnPrint Then ActiveSheet.PrintPreview
  
  Application.ActivePrinter = strActP  'der erste Drucker wird wieder aktiviert
With ActiveSheet
    .PageSetup.PrintArea = "A4:P47"
    .PageSetup.Orientation = xlPortrait
    .PrintOut ' hier erfolgt er eigentliche Ausdruck, immer!
    End With
        Application.ScreenUpdating = False
    Range("A4:P162").Select
    ActiveSheet.PageSetup.PrintArea = "$A$4:$P$162"
    Range("G4").Select
    Application.ScreenUpdating = True
End Sub
Gruß, Daniel


  

Betrifft: OK, jetzt glaube ich zu wissen .... von: WalterK
Geschrieben am: 22.11.2009 16:01:53

Hallo Daniel,

... warum es nicht funktioniert. Kannst Du mir auch noch behilflich sein, damit der Code richtig läuft.

Danke und Servus, Walter


  

Betrifft: AW: OK, jetzt glaube ich zu wissen .... von: Daniel
Geschrieben am: 22.11.2009 16:11:52

HI
im prinzip schon, was ist denn deine nächste Frage?
Gruß, Daniel


  

Betrifft: AW: OK, jetzt glaube ich zu wissen .... von: WalterK
Geschrieben am: 22.11.2009 16:18:27

Hallo Daniel;

Ziel ist
1.) dass ich beim Druckerdialog auch einen anderen Drucker auswählen kann und dann auch mit diesem gedruckt wird und
2.) wenn ich auf Abbrechen klicke, dass dann auch abgebrochen wird.

Ich bin totaler VBA-Laie und kann nichts davon selbst erledigen.

Servus, Walter


  

Betrifft: AW: OK, jetzt glaube ich zu wissen .... von: Daniel
Geschrieben am: 22.11.2009 16:23:59

HI

wenn du absoluter VBA-Laie bist, von wem hast du dann diesen Code?

Gruß, Daniel


  

Betrifft: Wenn ich etwas in VBA brauche ... von: WalterK
Geschrieben am: 22.11.2009 16:34:18

Hi

suche ich in der Recherche und versuche den Rest mittels Makrorekorder hinzubekommen.

So auch hier. Den 1. Teil habe ich im Forum erhalten, den Rest zusammengestückelt.

Servus, Walter


  

Betrifft: AW: Wenn ich etwas in VBA brauche ... von: Daniel
Geschrieben am: 22.11.2009 16:55:58

Hi
da das Problem schneller gelöst als erklärt ist:

Sub BlattEins()
  Dim strActP As String, blnPrint As Boolean
  Dim auswahl As Long
  strActP = Application.ActivePrinter
  blnPrint = True
  
  auswahl = MsgBox("Ihr aktiver Drucker ist: " & strActP & vbLf & "Möchten Sie die Druckaufträ _
ge mit diesem Drucker ausführen und haben Sie die ABNr erfasst zw. überprüft?", _
    vbInformation + vbYesNo, "Drucken")
    
    If auswahl = vbNo Then blnPrint = Application.Dialogs(xlDialogPrinterSetup).Show
    
  If auswahl = vbYes Or blnPrint = True Then
        With ActiveSheet
            .PageSetup.PrintArea = "A4:P47"
            .PageSetup.Orientation = xlPortrait
            .PrintOut
        End With
        Application.ActivePrinter = strActP
    end if
End Sub

Gruß, Daniel


  

Betrifft: Das ist ein wahres Wort ... von: WalterK
Geschrieben am: 22.11.2009 17:15:05

Hallo Daniel,

... denn alles Erklären hätte nichts genutzt, wenn ich es nicht umsetzen kann.

Jetzt passt es wie es sein soll,

Danke und Servus, Walter


  

Betrifft: AW: Das ist aber eigentlich der Falsche von: Daniel
Geschrieben am: 22.11.2009 17:25:59

Weg, den schließlich willst du ja nicht ewig am Forumstropf hängen, oder?
Gruß, Daniel