Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1672to1676
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
Inhaltsverzeichnis

Userform um einen Wert verschieben

Userform um einen Wert verschieben
03.02.2019 16:41:33
Frank
Hallo,
ich habe eine Userform für Einstellungen. In dieser kann man einen Wert eingeben um die Userform in jede Richtung zu verschieben. Wird Excel neu gestartet, startet die Userform in der zuvor eingestellten Position.
Wird aber ein zu hoher Wert eingestellt, verschwindet die Userform nach dem Start in den nicht sichtbaren Bereich...
Kann man die Position auf den Rand begrenzen?
Gruß Frank.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform um einen Wert verschieben
03.02.2019 16:52:12
Frank
oder gleich den max. Verschiebewert ermitteln und bei Eingabe von zu hohem Verschiebewert in der TextBox durch den zuvor ermittelten max. Wert ergänzen...?
AW: Userform um einen Wert verschieben
03.02.2019 17:15:04
Matthias
Hallo
Beispiel:
Private Sub UserForm_Activate()
If UserForm1.Top 
Deinen Maximalwert für Left und Top musst Du selbst ermitteln
und mit einpflegen.
Wobei ich persönlich das Verschieben eher mit einem SpinButton realisieren würde.
Gruß Matthias
AW: Userform um einen Wert verschieben
03.02.2019 17:33:04
Nepumuk
Hallo Frank,
an die Maximalwerte für unten und links kommst du so:
Option Explicit

Private Declare PtrSafe Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long
Private Declare PtrSafe Function GetWindowRect Lib "user32.dll" ( _
    ByVal hwnd As LongPtr, _
    ByRef lpRect As RECT) As Long
Private Declare PtrSafe Function FindWindowA Lib "user32.dll" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As LongPtr

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

Private Const SM_CXSCREEN As Long = 0
Private Const SM_CYSCREEN As Long = 1
Private Const GC_CLASSNAMETASKBAR As String = "Shell_TrayWnd"

Private Sub UserForm_Click()
    Dim lngptrhWnd As LongPtr
    Dim udtRectangle As RECT
    lngptrhWnd = FindWindowA(GC_CLASSNAMETASKBAR, vbNullString)
    Call GetWindowRect(lngptrhWnd, udtRectangle)
    Left = GetSystemMetrics(SM_CXSCREEN) * 0.75 - Width
    Top = GetSystemMetrics(SM_CYSCREEN) * 0.75 - Height - _
        (udtRectangle.Bottom - udtRectangle.Top) * 0.75
End Sub

Ich bin dabei davon ausgegangen dass sich die Taskleiste unten Befindet.
Gruß
Nepumuk
Anzeige
AW: Userform um einen Wert verschieben
03.02.2019 17:08:20
AlterDresdner
Hallo Frank,
kann man. Mit
Me.Left = Application.Left + Application.Width - Me.Width
wird z.B. die Userform (fast) rechtsbündig im Fenster angezeigt.
Analog kann man mit .Top und .Height arbeiten.
Gruß der AlteDresdner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige