Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
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

@Nepumukl?. Userform Position ändern

@Nepumukl?. Userform Position ändern
05.02.2019 10:27:17
Dieter(Drummer)
Guten Tag Nepumuk,
vor einigen Tagen war ein Anfrage hier im Forum, in Sachen "Position der Userform".
Bei den Antwortne darauf, wurde eine Beispieldatei wie folgt als Hyperlink gezeigt:
Die Bespieldatei: Userform mit 4 Buttons, für rechts, links, oben und unten, durch die man per Klick die Userform auf dem TabBlatt verschieben konnte.
Ich kann diese Beispieldatei nicht mehr finden und habe schon in Der Recherche etc. alles durchgeforstet, aber ohne Erfolg.
Fals du, Nepumuk, die Bespieldatei hast, wäre es sehr freundlich, diese mir noch zukommen zu lassen. Die Datei fand ich einfach prima.
Gruß, Dieter(Drummer)

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @Nepumukl?. Userform Position ändern
05.02.2019 11:54:42
Nepumuk
Hallo Dieter,
wenn du schon die Maus in der Hand hast um auf einen Button zu klicken, warum benutzt du sie nicht gleich um das Userform mit der Maus zu packen und dahin zu schieben wohin du willst?
Ich kann dir natürlich einen Code liefern mit dem du per Button das Userform verschieben kannst wenn du willst. Du musst nur sagen was die Buttons genau machen sollen. Also z.B. klick auf den "nachlinks-Button" das Userform wird so weit wie möglich nach links verschoben oder sie wird z.B. um 10 % nach links verschoben oder ...
Gruß
Nepumuk
AW: Danke Nepumuk für Rückmeldung, ich ...
05.02.2019 12:19:05
Dieter(Drummer)
Hallo Nepumuk,
... suche die Möglichkeit, die Userform in kleinen Schritten, wobei ich die jeweilige Schrittgröße im Code selbst auch verändern/anpassen kann, nach: rechts, links, oben und unten, zu verschieben.
Mich interessiert einfach, wie dazu der Code sein muss. Anbei eine Musterdatei mir einer Userform mit entsprechenden Spinbutton. Da ist wohl nicht der entsprechend notwendige Code drin. Wäre schön, wenn du da helfen kannst.
Gruß, Dieter(Drummer)
Musterdatei: https://www.herber.de/bbs/user/127430.xlsm
Anzeige
AW: Danke Nepumuk für Rückmeldung, ich ...
05.02.2019 14:24:11
Nepumuk
Hallo Dieter,
wie schon im anderen Thread geschrieben, ich gehe davon aus dass sich die Taskleiste unten befindet. Wenn das variabel sein soll, dann wird es etwas komplizierter. Und wenn das Ganze über mehrere Bildschirme gehen soll, dann wird es richtig kompliziert, aber nicht unmöglich.
https://www.herber.de/bbs/user/127433.xlsm
Gruß
Nepumuk
AW: Danke Nepumuk, das ist so, ...
05.02.2019 14:51:50
Dieter(Drummer)
Hallo Nepumuk,
... wie ich es mir vorgestellt habe. Es funktioniert prima :-).
An dem Code von dir sehe ich, dass es ein erheblicher Aufwand ist, dies zu bewerkstelligen.
Diese VBA Programmierstufe werde ich wohl nie erreichen.
Herzlichen Dank und noch einen erfeulichen Tag.
Gruß, Dieter(Drummer)
Anzeige
AW: Habe schon festgestellt, ...
05.02.2019 15:02:59
Dieter(Drummer)
Hallo Nepumuk,
... dass ich die "Step" Zahl ändern kann und so die Schritte der Richtungsänderung, kleiner oder größer werden.
Prima Idee von dir ...
Danke und Gruß, Dieter(Drummer)
AW: Habe schon festgestellt, ...
05.02.2019 15:33:54
Nepumuk
Hallo Dieter,
so kannst du den Cursor mitwandern lassen:
Option Explicit

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 Declare PtrSafe Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32.dll" ( _
    ByRef lpPoint As POINTAPI) As Long
Private Declare PtrSafe Function SetCursorPos Lib "user32.dll" ( _
    ByVal x As Long, _
    ByVal y As Long) As Long

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

Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Const Step As Single = 100

Private Const GC_CLASSNAME_TASKBAR As String = "Shell_TrayWnd"

Private Const SM_CXSCREEN As Long = 0
Private Const SM_CYSCREEN As Long = 1

Private mudtTaskbarRect As RECT
Private msngScreenWidth As Single
Private msngScreenHeight As Single
Private msngTaskbarHeight As Single

Private Sub CommandButton1_Click()
    Call Unload(Object:=Me)
End Sub

Private Sub SpinButton1_SpinUp()
    Dim udtPointApi As POINTAPI
    Left = Application.Min(msngScreenWidth - Width, Left + Step)
    Call GetCursorPos(udtPointApi)
    Call SetCursorPos(udtPointApi.x + Step / 0.75, udtPointApi.y)
End Sub

Private Sub SpinButton1_SpinDown()
    Dim udtPointApi As POINTAPI
    Left = Application.Max(0, Left - Step)
    Call GetCursorPos(udtPointApi)
    Call SetCursorPos(udtPointApi.x - Step / 0.75, udtPointApi.y)
End Sub

Private Sub SpinButton2_SpinDown()
    Dim udtPointApi As POINTAPI
    Top = Application.Min(msngScreenHeight - msngTaskbarHeight - Height, Top + Step)
    Call GetCursorPos(udtPointApi)
    Call SetCursorPos(udtPointApi.x, udtPointApi.y + Step / 0.75)
End Sub

Private Sub SpinButton2_SpinUp()
    Dim udtPointApi As POINTAPI
    Top = Application.Max(0, Top - Step)
    Call GetCursorPos(udtPointApi)
    Call SetCursorPos(udtPointApi.x, udtPointApi.y - Step / 0.75)
End Sub

Private Sub UserForm_Initialize()
    Dim lngprtTaskbarHwnd As LongPtr
    lngprtTaskbarHwnd = FindWindowA(GC_CLASSNAME_TASKBAR, vbNullString)
    Call GetWindowRect(lngprtTaskbarHwnd, mudtTaskbarRect)
    With mudtTaskbarRect
        msngTaskbarHeight = (.Bottom - .Top) * 0.75
    End With
    msngScreenWidth = CSng(GetSystemMetrics(SM_CXSCREEN) * 0.75)
    msngScreenHeight = CSng(GetSystemMetrics(SM_CYSCREEN) * 0.75)
End Sub

Gruß
Nepumuk
Anzeige
AW: Danke Nepumuk, einfach ...
05.02.2019 16:23:07
Dieter(Drummer)
Hallo Nepumuk,
einfach genial und funktioniert prima!
Herzlichen Dank für die zusätzliche Erweiterung/Verbesserung.
Gruß, Dieter(Drummer)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige