Userform auf ein A4-Blatt drucken
Schritt-für-Schritt-Anleitung
Um eine Userform auf ein DIN A4 Blatt zu drucken, kannst Du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass die Userform auf die Länge eines DIN A4 Blattes skaliert wird, sodass sie beim Druck nicht mehrere Seiten benötigt.
- Öffne Deine Excel-Datei und gehe zum VBA-Editor (Alt + F11).
- Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
- Kopiere den folgenden Code in das Modul:
Private Sub cmd_Druck_Click()
Dim wshTemp As Worksheet
DoEvents
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
DoEvents
ThisWorkbook.Worksheets.Add
ActiveSheet.Name = "Temp"
Set wshTemp = ThisWorkbook.Worksheets("Temp")
With wshTemp
.Paste
.PageSetup.Orientation = xlLandscape
.PrintOut
.DrawingObjects.Delete
End With
Application.DisplayAlerts = False
ThisWorkbook.Worksheets("Temp").Delete
Application.DisplayAlerts = True
End Sub
- Rufe die Funktion auf, indem Du
Call cmd_Druck_Click
in Deiner Userform nutzt.
Häufige Fehler und Lösungen
- Laufzeitfehler 1004:
Wenn Du beim Ausführen des Codes die Fehlermeldung "Die Zoomeigenschaft des PageSetup-Objektes kann nicht festgelegt werden" erhältst, stelle sicher, dass der Zoomfaktor korrekt eingestellt ist. Versuche den Zoomfaktor auf 160 zu setzen:
.Zoom = 160
- Userform wird nicht vollständig gedruckt:
Überprüfe die Höhe und Breite Deiner Userform in den Eigenschaften. Diese sollten auf die Länge eines DIN A4 Blattes abgestimmt sein (210 mm x 297 mm in Hochformat).
Alternative Methoden
Eine weitere Möglichkeit, die Userform zu drucken, besteht darin, die Userform als Bild zu speichern und anschließend zu drucken:
Sub SaveUserFormAsImage()
Dim imgPath As String
imgPath = "C:\temp\userform.png" ' Speicherort anpassen
Me.CopyPicture
With CreateObject("WScript.Shell")
.Run "mspaint"
DoEvents
End With
Application.Wait Now + TimeValue("00:00:02")
SendKeys "^v"
Application.Wait Now + TimeValue("00:00:02")
SendKeys "%(f)"
SendKeys "s"
Application.Wait Now + TimeValue("00:00:02")
SendKeys imgPath
SendKeys "{ENTER}"
End Sub
Praktische Beispiele
Hier ist ein Beispiel für den kompletten Code zum Drucken einer Userform auf ein A4 Blatt:
Sub prcPrintForm(strFrmName As String)
Dim intAltScan As Integer, intIndex As Integer
Dim lngMode As Long
Application.ScreenUpdating = False
intAltScan = MapVirtualKey(VK_MENU, 0)
keybd_event VK_MENU, intAltScan, 0, 0
keybd_event vbKeySnapshot, lngMode, 0&, 0&
DoEvents
keybd_event VK_MENU, intAltScan, KEYEVENTF_KEYUP, 0
ThisWorkbook.Worksheets.Add
Rows.RowHeight = 3
Columns.ColumnWidth = 0.83
With ActiveSheet
.Paste
With .PageSetup
.Orientation = xlLandscape
.Zoom = 160
.PrintOut
End With
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
Application.ScreenUpdating = True
End Sub
Tipps für Profis
- Setze die Margen in den PageSetup-Einstellungen, um sicherzustellen, dass der Inhalt optimal auf das A4 Blatt passt. Die Standard-DIN A4 Blatt Länge ist 297 mm, also passe die Margen entsprechend an.
- Verwende die Funktion
Application.CentimetersToPoints
für genauere Margen- und Größenangaben.
- Teste verschiedene Zoomfaktoren, um die beste Druckqualität zu erzielen. Ein Zoomfaktor von 160 hat sich als besonders effektiv erwiesen.
FAQ: Häufige Fragen
1. Wie kann ich die Größe der Userform anpassen?
Du kannst die Größe der Userform in den Eigenschaften im VBA-Editor anpassen, indem Du die Höhe und Breite entsprechend der Länge eines DIN A4 Blattes einstellst.
2. Was ist der beste Zoomfaktor für den Druck?
Der optimale Zoomfaktor kann variieren. Viele Anwender haben gute Erfahrungen mit einem Zoomfaktor von 160 gemacht. Teste verschiedene Werte, um die beste Ausgabe zu erreichen.