ich habe ca. 50 Tabellenblätter in meiner Arbeitsmappe.
Davon sollen per Makro einige Tabellenblätter markiert und als ein Druckauftrag gedruckt werden.
Als Grundlage habe ich mir per Makro-Recorder den Code erstellt wie folgt:
Sheets(Array("Tabelle 1", "Tabelle 2")).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Funktioniert auch.
Die zu druckenden Seiten sollen aber variabel sein; der Nutzer der Datei kann auf einer Übersichtsseite Häckchen setzen, daraus ergibt sich, welche Tabellenreiter ausgegeben werden müssen; also z.B. Tabelle 1 + 2 oder Tabelle 5 + 7 + 8.
Ich habe also versucht das Array() mit einer Variablen zu füttern.
Die Variable wird von einem separaten Tabellenblatt gezogen, wo sie in Abhängigkeit von den Reiter die gedruckt werden sollen per "Verketten" genau so zusammengesetzt wird, wie im ursprünglichen Grundlagen-Code dargestellt (mit Anführungszeichen, Komma, Leerzeichen).
hier der Code mit der Variablen
Dim sDruckbereich As String
sDruckbereich = Sheets("Steuerung").Range("K49").Text 'z.B.: "Tabelle 1", "Tabelle 2"
Sheets(Array(sDruckbereich)).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Das funktioniert nicht; es kommt die Fehlermeldung "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"
Wenn ich die Variable so wie sie ist vom Reiter "Steuerung" Zelle K49 in den Zwischenspeicher nehme und anstatt sDruckbereich in den Array einfüge, läuft es ohne Probleme. Nur mit der Variablen nicht.
Was ist das Problem? Was muss ich ändern, damit es funktioniert? Gibt es einen alternativen Lösungsweg?
Wichtig ist mir, dass nur ein Druckauftrag erzeugt wird, egal wie viele Reiter gedruckt werden sollen. Also nicht für jeden Reiter ein einzelner Druckauftrag...
Danke & Gruß
Denise