Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Userform drucken

Userform drucken
26.07.2006 20:55:51
Max
Hallo,
ich habe beim Suchen ein Makro von Nepumuk gefunden, welches auch sehr gut
funktioniert.
Allerdings macht es aus einer kleinen Userform eine ganze DinA4 Seite.
Welche Zahlen muss ich ändern, damit das Zoom kleiner wird? Meine Versuche
führen leider immer wieder zu Fehlern.... ;-))
Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (LpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Enum Constants
KEYEVENTF_KEYUP = &H2
VK_MENU = &H12
sngMargin = 1.5 'Breit der Seitenränder in cm
End Enum

Private Sub GetWindowSnapShot(Mode As Long)
Dim altscan%, NT As Boolean
NT = IsNT
If Not NT Then
If Mode = 0& Then Mode = 1& Else Mode = 0&
End If
If NT And Mode = 0 Then
keybd_event vbKeySnapshot, 0&, 0&, 0&
Else
altscan = MapVirtualKey(VK_MENU, 0)
keybd_event VK_MENU, altscan, 0, 0
DoEvents
keybd_event vbKeySnapshot, Mode, 0&, 0&
End If
DoEvents
keybd_event VK_MENU, altscan, KEYEVENTF_KEYUP, 0
End Sub


Private Function IsNT() As Boolean
Dim verinfo As OSVERSIONINFO
verinfo.dwOSVersionInfoSize = Len(verinfo)
If (GetVersionEx(verinfo)) = 0 Then Exit Function
IsNT = verinfo.dwPlatformId = 2
End Function

Public Sub Userform_drucken(strFrmName As String)
Dim intIndex As Integer
Application.ScreenUpdating = False
Call GetWindowSnapShot(1)
ThisWorkbook.Worksheets.Add
Rows.RowHeight = 3
Columns.ColumnWidth = 0.83
With ActiveSheet
.Paste
With .PageSetup
.Orientation = IIf(UserForms.Add(strFrmName).Width > UserForms.Add(strFrmName).Height, xlLandscape, xlPortrait)
.LeftMargin = Application.CentimetersToPoints(sngMargin)
.RightMargin = Application.CentimetersToPoints(sngMargin)
.TopMargin = Application.CentimetersToPoints(sngMargin)
.BottomMargin = Application.CentimetersToPoints(sngMargin)
.HeaderMargin = Application.CentimetersToPoints(0)
.FooterMargin = Application.CentimetersToPoints(0)
.CenterVertically = True
.CenterHorizontally = True
.Zoom = 10
For intIndex = 1 To 3
Do Until ExecuteExcel4Macro("Get.Document(50)") > 1
.Zoom = .Zoom + Choose(intIndex, 50, 10, 1)
Loop
.Zoom = .Zoom - Choose(intIndex, 50, 10, 1)
Next
End With
.PrintOut
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
Application.ScreenUpdating = True
End Sub
Vielen Dank für eure Mühe!
Gruss
Max

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform drucken
26.07.2006 21:32:55
Kurt
Hi,
ist Me.PrintForm zu einfach?
mfg Kurt
AW: Userform drucken
26.07.2006 21:37:18
Max
Hallo Kurt,
.....ja, weil aus einer kleinen UserForm im Ausdruck eine noch kleinere wird..;-))
Ich hätte sie allerdings gerne etwas grösser, allerdings nicht auf DinA4 aufgeblasen.
Gruss
Max
AW: Userform drucken
26.07.2006 22:08:16
K.Rola
Hallo,
wie groß soll das Userform im Ausdruck denn sein?
Gruß K.Rola
AW: Userform drucken
27.07.2006 07:15:34
Max
Hallo K.Rola,
...das würde ich gerne am Ausdruck festmachen. Als Beispiel: eine UF in Grösse einer
Zigarettenschachtel (auf dem Bildschirm) hätte ich gern doppelt so gross.
Mir würde es schon reichen, wenn man mir die Zoomfunktion in dem Makro etwas erklärt,
dann würde ich mit den Zahlen solange herum probieren, bis es passt.
Danke!
Max
Anzeige
AW: Userform drucken
28.07.2006 16:20:01
Max
Hallo,
weiss denn villeicht jemand wo die Systematik diese Auschnittes erklärt wird
(VBA-Hilfe, Suchbegriff ?):
.Zoom = 10
For intIndex = 1 To 3
Do Until ExecuteExcel4Macro("Get.Document(50)") &gt 1
.Zoom = .Zoom + Choose(intIndex, 50, 10, 1)
Loop
.Zoom = .Zoom - Choose(intIndex, 50, 10, 1)
Danke!
Gruss
Max
AW: Userform drucken
28.07.2006 19:55:50
K.Rola
Hallo,
du hattest die Frage nicht als offen markiert, so dachte ich, das Thema wäre erledigt.
Der Code vergrößert den Zoomfaktor, bis der Ausdruck größer als eine Seite ist, das wird
mit ExecuteExcel4Macro("Get.Document(50)") abgefragt und anschließend wieder etwas verkleinert. Ich seh da keine Möglichkeit, auf diese Weise eine benutzerdefinierte Größe hinzubiegen.
Wenn du willst, kann ich dir aber eine andere Variante anbieten.
Gruß K.Rola
Anzeige
AW: Userform drucken
29.07.2006 01:02:23
Max
Hallo K.Rola,
erstmal vielen Dank dass du dich nochmal "reinhängst"!
Ich habe häufiger Userformen, die irgendwelche kleinen Rechnungen erledigen und in die
Tabelle eintragen. Daher ist der Ausdruck für die Unterlagen ganz praktisch.
Alternativ müsste ich die Werte in ein Tabellenblatt schreiben lassen und von dort
ausdrucken.
Das Beispiel (nur "drucken" und "abbrechen" funktioniert) hat auf dem Bildschirm die
Größe von 14 x 9 cm, als Ausdruck gerade noch 8,5 x 5,5 cm und das noch oben links
in der Ecke.
Da ich auch über Google zu "UserForm drucken" nicht viel gefunden habe, scheint es
entweder wenig Bedarf zu geben oder es geht nicht vernünftig.
Ab einem gewissen Zoomfaktor wird die Grafik so zerrissen, dass ich auf den Ausdruck
dann lieber verzichte.
Solltest du auch der Meinung sein, dass die Umleitung der Daten in ein Tabellenblatt
weniger Aufwand benötigt und ein besseres Druckergebnis bringt, können wir uns ein
Mega-Makro sparen.
Danke für deine Mühe!
Gruss
Max
https://www.herber.de/bbs/user/35432.xls
Anzeige
@K.Rola (fast gelöst)
29.07.2006 11:29:12
Max
Hallo K.Rola,
ich habe noch ein wenig gebastelt und eine - für mich - qualitativ gute Lösung gefunden:
Eine Hardcopy (AltGr+Druck) der UserForm die über eingepasste Textboxen mitschreibt.
https://www.herber.de/bbs/user/35434.xls
Kann bspw. über ein verstecktes Tabellenblatt laufen und läßt sich über Seitenansicht/ Zoom beliebig editieren.
Mir ist allerdings in der UserForm noch ein kleiner Schönheitsfehler aufgefallen, für
den du vielleicht eine Lösung weißt:
Wie bekomme ich "txtSumme" dazu sich zu entleeren, wenn eingebene Beträge wieder
gelöscht werden?
Vielen Dank für deine Mühe!
Gruß
Max
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige