28.02.2015, 01:48 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2015, 01:50 von atilla.)
Hallo Bernie,
das war doch nicht ganz durchdacht. Bitte den gesamten Code hinter der Userform löschen und den unten stehenden einfügen:
Code:
Option Explicit
Private Sub CommandButton1_Click() Dim i As Long, lngZ As Long
'alle Tabellen in Spalte D drucken With Sheets("alleTabellen") lngZ = .Cells(.Rows.Count, 4).End(xlUp).Row For i = 2 To lngZ Sheets(.Cells(i, 4).Value).PrintOut Next i
'alle in der Listbox ausgewählten Tabellen drucken For i = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(i) = True Then Sheets(Me.ListBox1.List(i, 1)).PrintOut Next i End With End Sub
Private Sub UserForm_Initialize() Dim i As Long, k As Long Dim lngZ As Long, lngA As Long Dim arr() With Sheets("alleTabellen") lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 lngA = Application.CountIf(.Columns(3), "X") If lngA > 0 Then ReDim arr(lngA - 1, 1) For i = 2 To lngZ If UCase(.Cells(i, 3).Value) = "X" Then arr(k, 0) = .Cells(i, 2).Value arr(k, 1) = .Cells(i, 1).Value k = k + 1 End If Next i With Me.ListBox1 .List = arr .ColumnCount = 2 .ColumnWidths = "100;0" End With End If End With End Sub
leider komme ich erst jetzt dazu dir zu antworten. Ich weiß nicht, ob ich alles richtig verstanden hatte mit deinem Codebeispiel. Es sind insgesamt wohl 48 Tabellenblätter, die gedruckt werden sollen, davon 12 feste Tabellenblätter. Die Arbeitsmappe enthält neben den auszudruckenden Tabellenblättern noch einige Tabellenblätter die als Hilfstabellen dienen und nicht ausgedruckt werden.
ich habe den Eindruck, dass ich mich falsch ausgedrückt hatte. Ich verstehe leider nicht wie ich dein Beispiel auf meine Belange umrüsten kann. Bei mir wird ausschließlich aus den UserFormen gearbeitet. Tabelle sollen überhaupt nicht sichtbar sein.
Kurz zu meiner Vorstellung: In der Arbeitsmappe befinden sich Datentabellen und Drucktabellen. Jede Tabelle hat einen Namen. Ausgeruckt werden (aktueller Stand) immer 12, weitere 36 Tabellen (aktueller Stand) sollen zur Auswahl stehen und der Anwender soll die Auswahl in einer Userform treffen, nicht auf einem Tabellenblatt. Anschließend die Auswahl drucken und/oder Druckvorschau Analog der Mustertabelle.
vntDruckeTab ist eine Variable, die kannst Du nicht innerhalb von zwei Anführungszeichen verwenden.
bei vntDruckeTab handelt es sich um ein Datenfeld, dessen Index in der Regel mit der 0 beginnt, ergo ist + 12 wenn die Schleife von 13 bis 48 geht, der falsche Weg.
Mache es 'so ähnlich'
Code:
(vntDruckeTab(lngC - 13)).PrintOut
so ähnlich deshalb weil deine Schleife von 13 bis 48 geht und somit 36 mal durchlaufen wird. Jetzt die Frage: Wieviele Elemente umfasst deine Vairable vntDruckeTab?
könntest Du bitte eine Datei mit den tatsächlichen Tabellennamen und einer Beschreibung welche immer und welche pro aktivierter Checkbox gedruckt werden sollen, hochladen?
die gelben Tabellen sind Datenablage, die grünen sollen gedruckt werden, davon sind die ersten 12 als feste Ausdruckvorgabe (1=Deckblatt und 12=Vermögen und Verbindlichkeiten) die restlichen grünen (können auch mit der Zeit noch mehr werden) sind wahlweise per Chechbox auszuwählen. Die roten sind Hilfstabellen und werden nicht ausgedruckt, ebenso wie die gelben.