ich mochte gerne per Makro alle Blätter meiner Arbeitsmappe ( die Daten enthalten), immer mit dem gleichen Druckbereich ("A1:H47") per Schaltfläche drucken können. Mit Auswahl ......alle Arbeitsblätter, oder ein bestimmtes Blatt, oder eine bestimmte Zusammenstellung an Blättern.
Ob dieses machbar ist, weiß ich nicht...ich hoffe es?
Die Arbeitsblätter sind im Moment nummeriert, sollen aber später Namen bekommen.
Sub GMG() Dim wks As Worksheet For Each wks In ActiveWindow.SelectedSheets ActiveSheet.PageSetup.PrintArea = DeinDruckBereich 'Drucken Next wks End Sub
Vorher natürlich die Blätter markieren.
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
vielen Dank für deine Hilfe. Ich probiere es heute Abend wenn ich zu Hause bin mal aus.
Muss ich dann jedes mal die Blätter anwählen und den Druckbereich auswählen? Das wollte ich eigentlich vermeiden, da jedes Blatt den selben Bereich hat und ich mit einem Klick auf einem Botton, alle Seiten (Blätter) oder eine bestimmet Anzahl an Blätter drucken möchte.
Aber wie gesagt, ich probiere erst einmal deinen Code aus und gebe ne Rückmeldung. :)
(03.03.2016, 13:29)Mike4711 schrieb: Muss ich dann jedes mal die Blätter anwählen und den Druckbereich auswählen? Das wollte ich eigentlich vermeiden, da jedes Blatt den selben Bereich hat und ich mit einem Klick auf einem Botton, alle Seiten (Blätter) oder eine bestimmet Anzahl an Blätter drucken möchte.
der Druckbereich ist im Makro für alle Blätter gleich und es werden alle ausgewählten Blätter gedruckt.
Woher soll Excel sonst wissen, ob Du alle oder eine bestiimmte Anzahl oder nur eines ausdrucken willst? Wenn die jeweilige Anzahl fix ist, könntest Du es über mehrere Buttons lösen: einer für alle, einer für das aktive Blatt, einer für Blatt 2,3,7,10; einer für Blatt 2,4,6,8; usw...
Du kannst auch das BeforePrint Ereignis nutzen um den Druckbereich festzulegen.
Entweder:
wenn in der Datei für alle Blätter immer der gleiche Druckbereich gelten soll, dann kannst Du das im BeforePrint Ereignis regeln.
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean) ActiveSheet.PageSetup.PrintArea = "A1:H47" End Sub
Egal welche Tabelle gedruckt wird, gilt für diese der im Code festgelegte Druckbereich.
Oder, wenn es nur für bestimmte Blätter gelten soll, dann so:
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean) If InStr("Tabelle1 Tabelle2 Tabelle3", ActiveSheet.Name) Then ActiveSheet.PageSetup.PrintArea = "A1:H47" End If End Sub
Der im Code festgelegter Druckbereich gilt in diesem Fall nur für die im Code gelisteten Tabellen.
Eines der Codes muss dann in das Code Modul DieseArbeitsmappe
03.03.2016, 16:17 (Dieser Beitrag wurde zuletzt bearbeitet: 03.03.2016, 16:18 von Kuwer.)
Hallo Mike,
ich schlage ein Userform vor:
Dialog ufAusdruck
OptionExplicit
PrivateSub cbAuswahl_Click() Dim lngZ AsLong For lngZ = 0To Me.ListBox1.ListCount - 1 ListBox1.Selected(lngZ) = Not ListBox1.Selected(lngZ) And Len(ListBox1.List(lngZ)) Next lngZ EndSub
PrivateSub cbDrucken_Click() Dim lngZ AsLong OnErrorResumeNext Me.Hide For lngZ = 0To ListBox1.ListCount - 1 If ListBox1.Selected(lngZ) Then 'Worksheets(CStr(ListBox1.List(lngZ))).Range("A1:H47").PrintPreview Worksheets(CStr(ListBox1.List(lngZ))).Range("A1:H47").PrintOut Copies:=tbKopien, Collate:=False EndIf Next lngZ Me.cbSchliessen.SetFocus Me.Show EndSub
PrivateSub UserForm_Initialize() Dim oWorksheet As Worksheet ListBox1.Clear With ListBox1 ForEach oWorksheet In ActiveWorkbook.Worksheets .AddItem oWorksheet.Name .Selected(.ListCount - 1) = True Next oWorksheet EndWith EndSub
Du kannst auch das BeforePrint Ereignis nutzen um den Druckbereich festzulegen.
Entweder:
wenn in der Datei für alle Blätter immer der gleiche Druckbereich gelten soll, dann kannst Du das im BeforePrint Ereignis regeln.
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean) ActiveSheet.PageSetup.PrintArea = "A1:H47" End Sub
Egal welche Tabelle gedruckt wird, gilt für diese der im Code festgelegte Druckbereich.
Oder, wenn es nur für bestimmte Blätter gelten soll, dann so:
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean) If InStr("Tabelle1 Tabelle2 Tabelle3", ActiveSheet.Name) Then ActiveSheet.PageSetup.PrintArea = "A1:H47" End If End Sub
Der im Code festgelegter Druckbereich gilt in diesem Fall nur für die im Code gelisteten Tabellen.
Eines der Codes muss dann in das Code Modul DieseArbeitsmappe
Hallo Atilla, auch deinen Vorschlag werde ich mal ausprobieren. Du hast mir bisher auch immer sehr gut geholfen. Ich wünschte, ich hätte bisher mehr Zeit gehabt, Makroprogrammierung besser zu verstehen. Aber die letzten Monate waren sehr turbulent. Gruß Mike