03.11.2016, 21:12
Hallo, habe eine Userform erstellt.
Im Prinzip ist es ein Checkboxfeld, welches die Tabellenblätter einer Excel anzeigt und es gibt die Schaltflächen "Drucken" (druckt die angeklickten Tabellenblätter) und "Anzeigen" (zeigt die Datei mit den Tabellenblätter an).
Es gibt aber 2 Probleme.
-Wenn ich mit X die Userform abbrechen will, öffnet er trotzdem die Exceldatei
-Er druckt immer das erste Tabellenblatt mit aus. Egal ob es ein Häckchen bekommen hat oder nicht
Weiß hier jemand einen Rat?
Im Prinzip ist es ein Checkboxfeld, welches die Tabellenblätter einer Excel anzeigt und es gibt die Schaltflächen "Drucken" (druckt die angeklickten Tabellenblätter) und "Anzeigen" (zeigt die Datei mit den Tabellenblätter an).
Es gibt aber 2 Probleme.
-Wenn ich mit X die Userform abbrechen will, öffnet er trotzdem die Exceldatei
-Er druckt immer das erste Tabellenblatt mit aus. Egal ob es ein Häckchen bekommen hat oder nicht
Weiß hier jemand einen Rat?
Code:
Option Explicit
Private Sub CmdAbbrechen_Click()
Unload Me
End Sub
Private Sub CmdDrucken_Click()
Dim intSh As Integer
Dim Msg As String
Dim intX As Integer
Dim bln As Boolean
Dim vntSheets() As Variant
'Prüfung ob etwas ausgewählt wurde
For intSh = 0 To Me.Listbox1.ListCount - 1
If Me.Listbox1.Selected(intSh) Then
bln = True
End If
Next
If bln = False Then
MsgBox "Es wurde nichts ausgewählt", 48
Exit Sub
End If
If Me.OptionButton1.Value = True Then
'Drucken der einzelnen Seiten
If Me.Listbox1.ListCount > 0 Then
Application.Dialogs(xlDialogPrint).Show '<-- Fenster zur Druckerauswahl aktiviert
For intSh = 0 To Me.Listbox1.ListCount - 1
If Me.Listbox1.Selected(intSh) Then
Worksheets(Me.Listbox1.List(intSh)).PrintOut
Msg = Msg & Me.Listbox1.List(intSh) & vbCr
End If
Next
End If
Else
'Zusammenhängender Druck
If Me.Listbox1.ListCount > 0 Then
Application.Dialogs(xlDialogPrint).Show '<-- Fenster zur Druckerauswahl aktiviert
For intSh = 0 To Me.Listbox1.ListCount - 1
If Me.Listbox1.Selected(intSh) Then
intX = intX + 1
ReDim Preserve vntSheets(1 To intX)
vntSheets(intX) = Me.Listbox1.List(intSh)
Msg = Msg & Me.Listbox1.List(intSh) & vbCr
End If
Next
' ActiveWorkbook.Sheets(vntSheets).Select
End If
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Worksheets(1).Select
End If
' MsgBox "Folgende Seiten wurden gedruckt:" & vbCr & vbCr & Msg Meldung anzeigen
End Sub
Private Sub Label1_Click()
End Sub
Private Sub Listbox1_Click()
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
Dim intI As Integer
For intI = 1 To Worksheets.Count
If Worksheets(intI).Visible = True Then
Me.Listbox1.AddItem Worksheets(intI).Name
End If
Next
Me.OptionButton1.Value = True
End Sub