184 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

ich möchte ein leeres Arbeitsblatt abhängig von zwei Variablen so aufteilen, dass beim Druck auf A4-Format die Anzahl der vorgegebenen Zeilen und Spalten eingehalten wird.

Ich habe z.B eine Form mit den Maßen 3,2 cm hoch, 6,2 cm breit und möchte diese in max.Anzahl auf ein A4-Blatt drucken (297X210). Das müßten also 3 Spalten und 9 Zeilen gleicher Größe ergeben. Wie müßte dafür der Code für die Anpassung der Zeilenbreite- und Höhe aussehen. Ich bin jedesmal an der Umrechnung von cm in Punkte/Pixel gescheitert.. Hat jemand einen Tipp?

Danke und Gruß A.

2 Antworten

+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Andreas,

die Umrechnung von Pixeln/Punkte ist leider nicht ganz so einfach. Ich nehme die folgenden Werte, wenn ich umrechnen muss, um annähernd das gewünschte Ergebnis zu bekommen:

Zeilenhöhe: Höhe in cm * 29,5

Bei gewünschten 3,2 cm Höhe müsstest du eine Zeilenhöhe von 94,4 eingeben

Spaltenbreite = =-0,71+5,1425*Breite in cm

Bei 6,2 cm Spaltenbreite müsstest du 33,17 eingeben.

Aber Achtung! Das sind nur Annäherungswerte und ggf. braucht es noch etwas feintuning. Wenn ich das in einer leeren Arbeitsmappe einstelle, dann ist im Ausdruck der Rahmen 3,2 cm hoch und 6,3 cm breit, also fast die von dir gewünschte Größe.

Bei der Breite und Höhe des Blattes würde ich noch jeweils 2 cm abziehen, da Drucker i.d.R. nicht randlos drucken.

Hier mal ein Beispielcode:

Sub ZeilenSpalten()

Dim intSpalten As Integer
Dim intSpaltenbreite As Integer
Dim intZeilenhoehe As Integer
Dim intZeilen As Integer

intSpaltenbreite = CInt(InputBox("Bitte geben Sie die gewünschte Spaltenbreite in cm ein!", "Eingabe Spaltenbreite"))
intSpalten = Int(18 / intSpaltenbreite)

intZeilenhoehe = CInt(InputBox("Bitte geben Sie die gewünschte Zeilenhöhe in cm ein!", "Eingabe Zeilenhöhe"))
intZeilen = Int(27.7 / intZeilenhoehe)

'Seitenränder auf jeweils 1 cm einstellen
With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0.393700787401575)
        .RightMargin = Application.InchesToPoints(0.393700787401575)
        .TopMargin = Application.InchesToPoints(0.393700787401575)
        .BottomMargin = Application.InchesToPoints(0.393700787401575)
End With

'Spaltenbreite formatieren
Range(Columns(1), Columns(intSpalten)).ColumnWidth = Round(-0.71 + 5.1425 * intSpaltenbreite, 2)
'Zeilenhöhe formatieren
Range(Rows(1), Rows(intZeilen)).RowHeight = Round(intZeilenhoehe * 29.5, 2)

End Sub

Durch die Berechnung der Spaltenbreite und Zeilenhöhe im Makro werden bei mir einem Ausdruck die von dir gewünschte Breite und Höhe nicht ganz erreicht. Beim Ausdruck sind die Kästchen 3 cm hoch und 6,1 cm breit.

Gruß

M.O.

0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo M.O.

genau das hatte ich gesucht. Ich dachte allerdings, dass das "einfacher" und bestimmter zu lösen geht. Dein code ist aber super und die die kleinen "Ungenauigkeiten" spielen keine Rolle.

Vielen Dank für die prima Lösung und VG.

Andreas
...