Druckdialog über VBA, dann div. Blätter ausdrucken
21.11.2006 10:01:34
Kasimir
ich brauche mal wieder Eure Hilfe. Ich habe ein Makro, über das verschiedene Blätter nach einer Vorauswahl, die in einer UserForm stattfindet, ausgedruckt werden sollen. Nun ist mein Makro im Moment so aufgebaut, dass die einzelnen CheckBoxen, die sich als Vorauswahl in der UserForm befinden, abgefragt werden ob sie markiert sind oder nicht. Ist eine CheckBox markiert, wird das Blatt, was angegeben ist, ausgedruckt. Soweit funktioniert das auch. Nun möchte aber mein Chef, dass man über das Druckendialogfeld ein Drucker und dessen Eigenschaften ausgewählt, bzw. geändert werden können und dann die Blätter auf dem ausgewählten Drucker ausgedruckt werden. Nun ist mein Problem, wie mache ich das. Das Dialogfenster wird ja mit dem Befehl Application.Dialogs(xlDialogPrint).Show geöffnet. Aber wie mache ich dann weiter, denn im Moment steht ja bei mir z.B. Sheets(Berechnung_1).PrintOut.
Nachfolgend mal der Code, der hinter dem Button aus der UserForm steht. Eventuell hilft das ja weiter.
Private Sub CommandButton1_Click()
Aktives_Blatt = ActiveSheet.Name
Sheets("Hilfstabelle").Range("AB2") = "ja"
'----------------------------------------------------------------------------------
'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
'----------------------------------------------------------------------------------
'Wenn Blatt "Berechnung_1" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox9 = False And CheckBox10 = False Then
MsgBox "Es wurde nicht angegeben, ob die Adresse auf dem Ausdruck erscheinen soll " _
& "Bitte Auswahl nachholen.", vbInformation, "Abbruch..."
Exit Sub
End If
If CheckBox1 = True Then
If Sheets("Berechnung_1").Visible = xlVeryHidden Then
With Sheets("Berechnung_1")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Berechnung_1").Select '.PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Berechnung_2" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox2 = True Then
If Sheets("Berechnung_2").Visible = xlVeryHidden Then
With Sheets("Berechnung_2")
.Visible = True
.Activate
'Prüfen ob Zeile 3 ausgeblendet oder eingeblendet
If .Rows("3:3").EntireRow.Hidden = True Then
Zeile_3_eingeblendet = True
Else
Zeile_3_eingeblendet = False
End If
'Ja Nach Auswahl der Checkboxen Zeile 3 zum Drucken ein- bzw. Ausblenden
If CheckBox9 = True Then
With Sheets("Berechnung_2")
.Unprotect Sheets("Hilfstabelle").Range("C2")
.ScrollArea = "A1:" & Replace(Cells(1, 256).Address(0, 0), "1", "") & "65536"
.Rows("3:3").EntireRow.Hidden = False
.ScrollArea = "A1:" & Replace(Cells(1, 9).Address(0, 0), "1", "") & "42"
.Protect Sheets("Hilfstabelle").Range("C2")
Goto Weiter
End With
End If
If CheckBox10 = True Then
With Sheets("Berechnung_2")
.Unprotect Sheets("Hilfstabelle").Range("C2")
.ScrollArea = "A1:" & Replace(Cells(1, 256).Address(0, 0), "1", "") & "65536"
.Rows("3:3").EntireRow.Hidden = True
.ScrollArea = "A1:" & Replace(Cells(1, 9).Address(0, 0), "1", "") & "42"
.Protect Sheets("Hilfstabelle").Range("C2")
End With
End If
Weiter:
.PrintOut
.Select
'Entsprechend der Prüfung ob Zeile ein- oder ausgeblendet,
'die Zeile wieder ein, bzw. ausblenden
If Zeile_3_eingeblendet = True Then
Berechnung_Zeile_3_ausblenden
Else
Berechnung_Zeile_3_einblenden
End If
.Visible = xlVeryHidden
End With
Else
'Prüfen ob Zeile 3 ausgeblendet oder eingeblendet
If Sheets("Berechnung_2").Rows("3:3").EntireRow.Hidden = True Then
Zeile_3_eingeblendet = True
Else
Zeile_3_eingeblendet = False
End If
'Ja Nach Auswahl der Checkboxen Zeile 3 zum Drucken ein- bzw. Ausblenden
If CheckBox9 = True Then Berechnung_Zeile_3_einblenden
If CheckBox10 = True Then Berechnung_Zeile_3_ausblenden
Sheets("Berechnung_2").PrintOut
'Entsprechend der Prüfung ob Zeile ein- oder ausgeblendet,
'die Zeile wieder ein, bzw. ausblenden
If Zeile_3_eingeblendet = True Then
Berechnung_Zeile_3_ausblenden
Else
Berechnung_Zeile_3_einblenden
End If
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Plan" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox4 = True Then
If Sheets("Plan").Visible = xlVeryHidden Then
With Sheets("Plan")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Plan").PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Konzept" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox3 = True Then
If Sheets("Konzept").Visible = xlVeryHidden Then
With Sheets("Konzept")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Konzept").PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Diagramm" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox5 = True Then
If Sheets("Diagramm").Visible = xlVeryHidden Then
With Sheets("Diagramm")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Diagramm").Select '.PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Vorschau Anlage V" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox7 = True Then
If Sheets("Vorschau Anlage").Visible = xlVeryHidden Then
With Sheets("Vorschau Anlage")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Vorschau Anlage").PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Rechtsbelehrung" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox8 = True Then
If Sheets("Rechtsbelehrung").Visible = xlVeryHidden Then
With Sheets("Rechtsbelehrung")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Rechtsbelehrung").PrintOut
End If
End If
Drucken_Activ = False
Sheets(Aktives_Blatt).Activate
Unload Me
Sheets("Hilfstabelle").Range("AB2") = "nein"
End Sub
Danke Euch für Eure Hilfe,
Kasimir