Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Frame
BildScreenshot zu Frame Frame-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ScrollBar
BildScreenshot zu ScrollBar ScrollBar-Seite mit Beispielarbeitsmappe aufrufen

VBA: Userform Minimieren Maximieren (Klassenmodul) | Herbers Excel-Forum


Betrifft: VBA: Userform Minimieren Maximieren (Klassenmodul) von: Lombe
Geschrieben am: 12.01.2012 09:25:08

Hi Leute,
ich kenn mich mit Klassenmodule wenig aus und habe daher folgendes Problem.
Meine Userform hat neben dem Schließkreuz rechts oben nun auch die Minimeren und Maximieren Schaltflächen dank der Codes (siehe Quellenangaben) die u.a. im Klassenmodul stehen.

Frage:
Ich möchte nun, dass die Userform direkt nach dem Aufruf „maximal“ („Vergrößern“) und somit gleich Bildschirmfüllend erscheint.
Vereinfacht gesagt möchte ich per VBA die Maximieren Schaltfläche neben dem Schließkreuz nach dem Start betätigen.

Derzeit erscheint die Userform beim Start am Bildschirm im „Verkleinern“ Modus
und hat die Abmessungen der Eigenschaften (width, height).

https://www.herber.de/bbs/user/78382.xlsm

Hinweis:
Es reicht mir leider nicht die width und height Eigenschaft der Userform beim Start (Initialisieren) auf
Userform1.Height = Application.Height
Userform1.Width = Application.Width
zu stellen, denn dann ist die Userform ja immer noch nicht im Vergrößern“-Modus (komplett maximiert).
Zwischen „Verkleinern“ und „Vergrößern“ wäre zu dem auch kaum ein Unterschied zu erkennen (beides wäre annähernd Bildschirmgroß)
und ein „Ziehen“ der Userformränder mit der Maus wäre dann auch nicht mehr so einfach möglich…

Danke für jegliche Information!

Quellenangaben:
www.herber.de/forum/archiv/796to800/t799902.htm
www.vb-fun.de

  

Betrifft: AW: VBA: Userform Minimieren Maximieren (Klassenmodul) von: Nepumuk
Geschrieben am: 13.01.2012 00:54:48

Hallo,

im Modul des Userforms:

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

Option Explicit

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPlacement Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByRef lpwndpl As WINDOWPLACEMENT) As Long
Private Declare Function GetWindowPlacement Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByRef lpwndpl As WINDOWPLACEMENT) As Long

Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type WINDOWPLACEMENT
    Length As Long
    flags As Long
    showCmd As Long
    ptMinPosition As POINTAPI
    ptMaxPosition As POINTAPI
    rcNormalPosition As RECT
End Type

Private m_objUserForm As clsUserForm
Private m_blnFormInit As Boolean

Private Const GC_CLASSNAMEMSUSERFORM = "ThunderDFrame"
Private Const SW_MAXIMIZE = 3

Private Sub UserForm_Activate()
    Dim lngHwnd As Long
    Dim udtWinEst As WINDOWPLACEMENT
    Set m_objUserForm = New clsUserForm
    Set m_objUserForm.Form = Me
    lngHwnd = FindWindow(GC_CLASSNAMEMSUSERFORM, Caption)
    Call GetWindowPlacement(lngHwnd, udtWinEst)
    udtWinEst.showCmd = SW_MAXIMIZE
    Call SetWindowPlacement(lngHwnd, udtWinEst)
End Sub

Alles andere in dem Modul kannst du löschen.

Gruß
Nepumuk


  

Betrifft: AW: VBA: Userform Minimieren Maximieren (Klassenmodul) von: Lombe
Geschrieben am: 16.01.2012 10:32:41

Hi Nepumuk,
super, das klappt so weit prima!
Es ergibt sich nun doch noch eine weitere Frage.

Ist es möglich, dass im verkleinern Modus, rechts und unten ein Scrollbalken (ScrollBarsBoth) in der Userform erscheinen,
diese Scrollbalken aber im maximierten Zustand (das ist der Normalzustand der Userform) wieder verschwinden?
Was muss im Code noch geändert werden?

Gruß
Lombe


  

Betrifft: AW: VBA: Userform Minimieren Maximieren (Klassenmodul) von: Nepumuk
Geschrieben am: 16.01.2012 21:14:10

Hallo,

im Modul des Userforms:

Private Sub UserForm_Resize()
    If Height >= ScrollHeight And Width >= ScrollWidth Then
        ScrollBars = fmScrollBarsNone
    ElseIf Height >= ScrollHeight And Width < ScrollWidth Then
        ScrollBars = fmScrollBarsHorizontal
    ElseIf Height < ScrollHeight And Width >= ScrollWidth Then
        ScrollBars = fmScrollBarsVertical
    Else
        ScrollBars = fmScrollBarsBoth
    End If
End Sub

Gruß
Nepumuk


Beiträge aus den Excel-Beispielen zum Thema "VBA: Userform Minimieren Maximieren (Klassenmodul)"