Guten Tag Excel-Profis,
ich habe eine Datei mit mehreren Tabellenblätter und je nach dem welche ich brauche hab ich ein extra Tabellenblatt mit Kontrollkästchen die ich anwähle.
Mit einem Button spuckt er genau die Seiten die ich angewählt habe in die Druckvorschau,
wenn ich aber per Seite einrichten die Kopfzeile ändere ändert er die nur auf der Seite die man gerade sieht.
Klar kann ich auch alle Tabellenblätter die ich brauche makieren und dann die Kopfzeile bearbeiten, aber genau das soll einfachere gehen, vllt. mit VBA und ein zusätzlichen Button.
Ich habe eine Beispieldatei angehängt, ich hoffe ihr könnt mir helfen.
Schöne Grüße Joe
Hallo Joe,
einen code bekommst DU auch über das Aufzeichnen hin - der ist zwar ellenlang, lässt sich aber deutlich verkürzen Hier mal das augezeichnete Original:
Code:
Sub Makro1()
'
' Makro1 Makro
'
'
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Select
Sheets("Tabelle3").Activate
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "benutzerdefiniert"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = "abgeschmiert"
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.708661417322835)
.RightMargin = Application.InchesToPoints(0.708661417322835)
.TopMargin = Application.InchesToPoints(0.78740157480315)
.BottomMargin = Application.InchesToPoints(0.78740157480315)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "benutzerdefiniert"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = "abgeschmiert"
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.708661417322835)
.RightMargin = Application.InchesToPoints(0.708661417322835)
.TopMargin = Application.InchesToPoints(0.78740157480315)
.BottomMargin = Application.InchesToPoints(0.78740157480315)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True
End Sub
Guten Morgen André,
ich hab dein Makro probiert der schmeißt mich einfach nur auf das 3 Tabellenblatt und hat nur auf dem dritten in der Kopfzeile "benutzerdefiniert" stehen.
Bestimmt weil man die Parameter in VBA eingeben muss, aber bei mir sollte er die Seite einrichten Fenster erscheinen,
denn die Kopfzeile ändert sich ständig und es müssen Laien die Datei bedienen können.
Gibt es kein Befehl der direkt das Seite einrichten Fenster auf macht?
Gruß Joe
Hallo Uwe,
genau das meine ich Danke. Aber irgendwie ändert er nur die Kopfzeile bei dem ersten Tabellenblatt, kannst du mal bitte rüber schauen?
Code:
Sub KopfFußzeile()
Dim i As Long
Dim oCheckbox As CheckBox
Dim strWs() As String
For Each oCheckbox In ActiveSheet.CheckBoxes
If oCheckbox.Value = 1 Then
i = i + 1
If i = 1 Then
ReDim strWs(1 To 1)
Else
ReDim Preserve strWs(1 To i)
End If
strWs(i) = oCheckbox.Caption
End If
Next oCheckbox
If i > 0 Then
Sheets(strWs).Application.Dialogs(xlDialogPageSetup).Show
Else
MsgBox "Es wurde kein Blatt ausgewählt.", vbInformation
End If
End Sub
Gruß Joe
Hallo an alle,
ich möchte jetzt im kompletten Arbeitsblatt die Kopfzeile und Fußzeile änder, sprich wenn ich auf ein Button klicke sollte das Fenster "Seite einrichten" erscheinen.
Bei meinem Code ändert der aber nur die Kopfzeile auf dem aktiven Arbeitsblatt.
Hat jemand eine Lösung?
Code:
Sub Makro1()
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Select
Application.Dialogs(xlDialogPageSetup).Show
End Sub
Gruß Joe
Hallo Joe,
bitte probiere es nochmal so:
Code:
Sub SeiteEinrichten()
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Select
Application.PrintCommunication = False
Application.Dialogs(xlDialogPageSetup).Show
Application.PrintCommunication = True
End Sub
Das läuft bei mir unter Excel 2013 und erzeugt auf allen Blättern den Eintrag.
Danke André läuft bei mir :19:
Gruß Joe
Noch eine Frage wofür steht
Code:
Application.PrintCommunication = False
genau?