Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Drucken per Userform als Array

Drucken per Userform als Array
strodti
Hallo liebes Forum,
ich habe mal wieder ein VBA-Problem.
In meiner Datei sind mehrere Tabellenblätter vorhanden, die in der Fußzeile über eine Seitenzahl verfügen. Beim Drucken habe ich bezüglich der Seitenzahlen zwei Möglichkeiten:
a) Wenn ich zum Drucken Blätter als Array zusammen fasse, werden die Seitenzahlen beim Drucken blattübergreifend ausgegeben.
b) Druck ich die Tabellen einzeln, sind die Seitenzahlen logischerweise nicht blattübergreifend.
In meiner Datei habe ich eine Userform, mit der ich meine Blätter auswählen und dann über einen auszuwählenden Drucker drucken kann (habe ich im Netz gefunden, siehe auch Beispieldatei). Leider druckt der Code gemäß b).
Kann mir jemand folgenden Code so ändern, dass die Auswahl in der Userform als Array erfasst und damit blattübergreifende Seitenzahlen ausgibt.
Private Sub CommandButton4_Click()
Me.Hide
End Sub

Private Sub UserForm_Activate()
Dim sh As Worksheet
Set wb = ActiveWorkbook
ListBox1.Clear
NichtAusführen = True
For Each sh In ActiveWorkbook.Worksheets
'hier die Blätter eintragen, die nicht aufgelistet werden sollen
If sh.Name  "Druck" Then _
ListBox1.AddItem sh.Name
Next
ListBox1.ListIndex = 0
'ListBox1.Height = 4 + 13 * ListBox1.ListCount
NichtAusführen = False
End Sub
Private Sub CommandButton1_Click()
Dim sh As Worksheet
Set wb = ActiveWorkbook
ListBox1.Clear
NichtAusführen = True
For Each sh In ActiveWorkbook.Worksheets
If sh.Name  "Druck" Then _
ListBox1.AddItem sh.Name
Next
'ListBox1.Height = 4 + 13 * ListBox1.ListCount
NichtAusführen = False
End Sub

Private Sub CommandButton3_Click()
Dim iTable As Integer, bPrinted As Boolean
Dim x As Variant
x = Application.Dialogs(xlDialogPrinterSetup).Show
If x = True Then
For iTable = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(iTable) Then
Sheets(ListBox1.List(iTable)).PrintOut
End If
Next iTable
If Not (bPrinted) Then MsgBox "Es ist kein Tabellenblatt zum Drucken gewählt!"
End If
'nachfolgend auskommentiert, damit beim Schließen der Userform Excel nicht verschwindet  _
(gem. Netz)
'Application.Visible = False
End Sub
Hier die Beispieldatei mit den Codes: https://www.herber.de/bbs/user/72770.xls
Vielen Dank im Voraus an alle Hilfsbereiten ... und darüberhinaus ein schönes Fest und guten Rutsch.
Tobias

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Drucken per Userform als Array
22.12.2010 11:22:11
Rudi
Hallo,
du musst die Sheets in ein Array schaufeln
Ungetestet:
Private Sub CommandButton3_Click()
Dim iTable As Integer, bPrinted As Boolean
Dim x As Variant, vntPrint(), iCounter As Integer
ReDim vntPrint(ListBox1.ListCount - 1)
x = Application.Dialogs(xlDialogPrinterSetup).Show
If x = True Then
For iTable = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(iTable) Then
vntPrint(iCounter) = ListBox1.List(i)
iCounter = iCounter + 1
End If
Next iTable
End If
If iCounter > 0 Then
ReDim Preserve vntPrint(iCounter - 1)
Sheets(vntPrint).PrintOut
Else
MsgBox "Es ist kein Tabellenblatt zum Drucken gewählt!"
End If
'nachfolgend auskommentiert, damit beim Schließen der Userform Excel nicht verschwindet  _
_
(gem. Netz)
'Application.Visible = False
End Sub

Gruß
Rudi
Anzeige
AW: Drucken per Userform als Array
22.12.2010 11:35:05
strodti
Hallo Rudi,
schön Dich mir gegenüber zu wissen.
Erstmal Danke für Deine Hilfe, aber leider funktioniert es noch nicht so ganz.
Mit Deinem Code erhalte ich die Meldung, dass die Variable i nicht definiert ist. Habe ich dann als Integer defeniert (richtig?).
Beim Drucken druckt er jedoch nur das erste ausgewählte Blatt.
Kannst Du mir weiterhelfen?
Gruß
Tobias
AW: Drucken per Userform als Array
22.12.2010 11:39:51
Rudi
Hallo,
dass die Variable i nicht definiert ist

Tippfehler: i muss iCounter sein.
Gruß
Rudi
Super - vielen Dank
22.12.2010 11:46:31
strodti
Hi Rudi,
yep, funktioniert einwandfrei. Nochmals vielen lieben Dank.
Lasst Euch alle reich beschenken.
Gruß
Tobias
Anzeige
AW: Drucken per Userform als Array
22.12.2010 11:33:57
Tino
Hallo,
ich habe es mal so versucht.
Private Sub CommandButton3_Click()
Dim i As Integer, ii As Integer
Dim ArraySelectSheets()
Dim aktPrinter As String

If ListBox1.ListIndex > -1 Then
    aktPrinter = ActivePrinter
    If Application.Dialogs(xlDialogPrinterSetup).Show Then

        
        Redim Preserve ArraySelectSheets(ListBox1.ListCount - 1)
        For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) Then
                ArraySelectSheets(ii) = ListBox1.List(i)
                ii = ii + 1
            End If
        Next i
        Redim Preserve ArraySelectSheets(ii - 1)
      
        Sheets(ArraySelectSheets).PrintOut
        ActivePrinter = aktPrinter
    End If
End If

End Sub
Gruß Tino
Anzeige
Danke an Euch beide!
22.12.2010 11:39:48
strodti
Hallo Tino,
vielen Dank dass auch Du mir wieder hilfst - und Dein Code funktioniert super.
An Rudi: nochmals vielen Dank auch für Deinen Code.
Euch beiden und allen anderen Hilfsbereiten wünsche ich schöne Festtage.
Bis denn
Tobias
AW: Drucken per Userform als Array
22.12.2010 11:36:08
fcs
Hallo Tobias,
hier die entsprechende Prozedur angepasst. Die selektierten Blätter werden zunächst in eine Array-Variable geschrieben, um sie anschliessend der Druckmethode zuzuweisen.
Gruß
Franz
Private Sub CommandButton3_Click()
Dim iTable As Integer
Dim x As Variant, arrBlatt() As String, iI As Integer
x = Application.Dialogs(xlDialogPrinterSetup).Show
If x = True Then
iI = 0
For iTable = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(iTable) Then
iI = iI + 1
ReDim Preserve arrBlatt(1 To iI)
arrBlatt(iI) = ListBox1.List(iTable)
End If
Next iTable
If iI > 0 Then
ActiveWorkbook.Sheets(arrBlatt).PrintOut
Else
MsgBox "Es ist kein Tabellenblatt zum Drucken gewählt!"
End If
End If
'nachfolgend auskommentiert, damit beim Schließen der Userform Excel nicht _
verschwindet (gem. Netz)
'Application.Visible = False
End Sub

Anzeige
Danke Franz
22.12.2010 11:44:06
strodti
Hallo Franz,
auch freue ich mich über Deine Hilfe (mal wieder). Auch Dein Code funktioniert super.
Ich wünsche Dir schöne Festtage - und bleib so hilfsbereit.
Gruß
Tobias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige