Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
660to664
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
660to664
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Steuerelemente in Userform drucken per VBA
02.09.2005 13:16:54
Frank
Hallo,
wenn ich zur Entwurfszeit einer Userform Steuerelemente (Textbox) zufüge und dann das Formular via "UserForm1.PrintForm" ausdrucken lasse, klappt alles wunderbar. Aber leider nicht, wenn die Textbox erst zur Laufzeit erstellt wird:
Dim TB As Control
Set TB = UserForm1.Controls.Add("Forms.Textbox.1", "Test" , True)
Auf dem Bildschirm, also mit "UserForm1.Show", sieht alles so aus, wie es sein soll. Beim Drucken wird aber nur das leere Formular ausgegeben, ohne die TextBox. Habe schon die Recherche, zwei Bücher und Google bemüht, bin aber nicht fündig geworden. Hat jemand von Euch eine Idee?
Vielen Dank schon mal und herzliche Grüße
Frank
PS.: Ich antworte auf jeden Beitrag, auch wenn es evtl. mal etwas länger dauert.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Steuerelemente in Userform drucken per VBA
02.09.2005 14:10:12
Nepumuk
Hallo Frank,
dann drucke das Userform nicht mit PrintForm sondern eine Bildschirmhardcopy. Die kannst du auch noch schön in der Größe anpassen.
' **********************************************************************
' Modul: basStart Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub start()
    UserForm1.Show
End Sub

' **********************************************************************
' Modul: basPrint Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" ( _
    ByVal wCode As Long, _
    ByVal wMapType As Long) As Long
Private Declare Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_MENU = &H12
Private Const lngMargin = &H1 'Breite der Seitenränder in cm

Public 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 = IIf(UserForms.Add(strFrmName).Width > _
                UserForms.Add(strFrmName).Height, 2, 1)
            .LeftMargin = Application.CentimetersToPoints(lngMargin)
            .RightMargin = Application.CentimetersToPoints(lngMargin)
            .TopMargin = Application.CentimetersToPoints(lngMargin)
            .BottomMargin = Application.CentimetersToPoints(lngMargin)
            .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

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub CommandButton1_Click()
    Unload Me
End Sub

Private Sub Image1_Click()
    Call prcPrintForm(Me.Name)
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Steuerelemente in Userform drucken per VBA
02.09.2005 16:34:30
Frank
Hallo Nepumuk,
vielen Dank für die Antwort. Ist etwas komplizierter als ich dachte, macht aber nichts. Jedenfalls wäre ich auf so eine Lösung nicht gekommen. Ich habe es noch nicht ausprobiert, mache ich heute abend. Bin aber überzeugt, dass es funktionieren wird; bisher haben ja alle Deine Vorschläge funktioniert.
Ich wünsche Dir ein schönes Wochenende.
Gruß
Frank

211 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige