Hallo ralf_b,
danke für die Antwort. Damit funktioniert es. Ich verstehe als Laie zwar nicht alles was das Makro macht, aber ich konnte es an meine Tabelle anpassen. Habe was gelernt. Sehr gut, freut mich sehr.
Es sieht jetzt so aus:
Sub Druckbereich_Monat()
ActiveSheet.PageSetup.PrintTitleRows = "$9:$9" ' damit lege ich die Titelzeile fest, damit sie immer mit gedruckt wird
ActiveSheet.PageSetup.PrintArea = monatsbereich(Cells(7, 18)) ' in der Zelle 7,18 steht mit Hilfe von Optionsfeldern der zu druckende Monat
Application.CommandBars.ExecuteMso "PrintPreviewAndPrint" ' mit dem Befehl wird das Druckmenü aufgerufen, dass jeder kennt
End Sub ' der Befehl den Du vorgeschlagen hast, für zu einem anderen Druckmenü
Function monatsbereich(monat&) As String
'die function gibt im Fehlerfall einen leeren Text zurück,
' wodurch der Druckbereich quasi entfernt wird.
Dim ZeileMonatAnfang, ZeileMonatEnde, datum As Date, rng As Range ' die Variablen hab ich etwas umbenannt für mich verständlicher
datum = DateSerial(Cells(5, 5), monat, 1) ' in der Zelle 5,5, steht das Jahr
With ActiveSheet ' Ich benutze ActiveSheet, auf jedem Blatt ist ein eigener Druckbutton
Set rng = .Columns(2) ' die Datumsreihe steht doch in Spalte B
End With
ZeileMonatAnfang = Application.Match(CDbl(datum), rng, 0)
If IsNumeric(ZeileMonatAnfang) Then
ZeileMonatEnde = Application.Match(WorksheetFunction.EoMonth(datum, 0), rng, 0)
If IsNumeric(ZeileMonatEnde) Then
monatsbereich = "A" & ZeileMonatAnfang & ":O" & ZeileMonatEnde ' der Druckbereich geht in meiner Tabelle bis Spalte O
Else
monatsbereich = ""
End If
Else
monatsbereich = ""
End If
End Function
|