Anzeige
Archiv - Navigation
1448to1452
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

Sheets(Array(...")).PrintOut, Blätter variabel

Sheets(Array(...")).PrintOut, Blätter variabel
25.09.2015 08:40:22
Kasimir
Moin an alle!
Ich habe da mal wieder an Anliegen. Ich möchte eine variable Zahl von Tabellenblätter drucken. Wenn ich mir das Makro aufzeichne erhalte ich nachfolgenden VBA-Code
Sheets(Array("Blatt1", "Blatt2", "Blatt3", "Blatt4")).PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False
Hier werden ja die Blätter 1 bis 4 ausgedruckt. Ich möchte aber nicht vorher schon festlegen welche Blätter, sondern erst durch ein Kriterium in meiner Mastertabelle. Ich könnte das ja nun auch über eine Schleife realisieren, aber bei obiger Lösung wird automatisch die Blattnummer und die Anzahl der markierten Blätter in der Fußzeile ausgegeben.
Ich hatte es auch schon damit versucht alle zu druckenden Blätter in ein Array zu schreiben, bin dann aber an dem Versuch die Daten aus dem Array in obigen VBA-Code zu bekommen gescheitert.
Wie kann ich nun die Angabe "Blatt1", "Blatt2", "Blatt3", "Blatt4" gegen einen variablen Bereich austauschen
MfG,
Kasimir

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheets(Array(...")).PrintOut, Blätter variabel
25.09.2015 08:54:30
Nepumuk
Hallo,
da du keinerlei Angaben dazu machst wie was in deiner Mastertabelle aussieht, ein einfaches Beispiel:
Public Sub Test()
    Dim avntArray() As Variant
    Redim avntArray(2)
    avntArray(0) = "Tabelle1"
    avntArray(1) = "Tabelle2"
    avntArray(2) = "Tabelle3"
    Worksheets(avntArray).PrintOut
End Sub

Gruß
Nepumuk

Anzeige
AW: Sheets(Array(...")).PrintOut, Blätter variabel
25.09.2015 09:06:15
Daniel
Hi
hier mal ein Beispiel, wie du Blätter mit einer Bestimmten Bedinung markieren und zusammen drucken kannst.
Da du deine Bedingung nicht genauer beschrieben hast, nehme ich alle Blätter deren Blattname mit "xxx" beginnt:
dim sh as Worksheet
dim first as boolean
first = True
for each sh in ActiveWorkbook.Worksheets
if sh.Name like "xxx*" then
sh.select first
first = false
end if
next
ActiveWindow.SelectedSheets.PrintOut
die Methode ist, dass man die Blätter einzeln nacheinander selektiert, aber ab der zweiten Selektion den ersten Parameter der Select-Funktion = FALSE setzt.
der erste Parameter der Select-Funktion steuert, ob beim Selektieren eines Objektes die alte Selektion verworfen wird (True oder nicht angegeben) oder ob die alte Selektion um die neue erweitert wird (False), so wie bei gedrückter STRG-Taste.
Gruß Daniel

Anzeige
Array mit Horizontale Ausrichtung
25.09.2015 09:53:55
Tino
Hallo,
du brauchst nur ein Array erstellen welches eine Horizontale Ausrichtung hat.
Wie du dies aufbaust ist egal, so wie im Beispiel oder mit einer Schleife usw...
Beispiel:
Sub PrintTabs()
Dim varTabs
'Range wo die Tabellen stehen
'Keine leeren Zellen u. nur Tabellen die vorhanden sind!
With Tabelle1.Range("A2:A4")
If .Cells.Count > 1 Then
varTabs = .Value2
If UBound(varTabs, 2) = 1 Then
varTabs = Application.Transpose(varTabs)
End If
Else
varTabs = Array(.Value)
End If
End With
Worksheets(varTabs).PrintOut
End Sub
Gruß Tino

Anzeige
Danke für die Lösungen!
26.09.2015 17:30:44
Kasimir
Hallo an alle!
Sorry, dass ich erst jetzt reagiere, aber ich bin leider nicht eher dazu gekommen, die Lösungen auszuprobieren. Besten dank an alle für die Hilfe. Für mich war die Lösung von Daniel das was ich gesucht habe.
Schönes WE noch,
Kasimir

16 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige