Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Objektposition festlegen

Objektposition festlegen
18.06.2008 13:58:00
Richard
Hallo,
schon wieder bin ich hier am experementieren und stelle fest, dass ich einfach noch zu blöd bin das hinzukriegen. Habe irgendwie auch nicht wirklich etwas darüber gefunden.
Vielleicht kennt jemand ja eine Lösung, die mir weiterhelfen könnte.
Habe festgestellt, dass die Top-, u. Left-Eigenschaft eines Objekts (z.B. CommandButton) auf einem Tabellenblatt sich auf die Tabelle selbst bezieht. Siehe folgende Skizze:
   |    A    |
--+-------+
1 |Hier befindet sich der Button (Left = 0, Top = 0)
--+
Bei einer Userform jedoch ist das anders, dort bezieht sich diese Eigenschaft auf den Bildschirm.
Ich muss also wissen, welche Position ein Objekt gemessen vom oberen und linken Rand des Bildschirms, halt ebenso wie bei einer Userform, hat.
Das Obekt, in meinem Fall ein CommandButton und die Userform, die durch diesen Button gestartet wird, stehen optisch in einem sehr engen Zusammenhang. De Facto möchte ich, dass sich die Userform direkt unter dem Button öffnet.
Würde ich die Exceldatei nur auf meinem Rechner verwenden wollen, würde ich diese Frage sicherlich nicht stellen.
Mit freundlichen Grüßen
Richard

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objektposition festlegen
18.06.2008 14:13:45
Johannes
Hallo Richard,
so langsam wird klar was du da vor hast - bin aufs Endergebnis gespannt, falls du Lust hast, das zu praesentieren. :-) Geh doch den Umweg und missbrauche die .Top/.Left Eigenschaften der Zellen. Beispiel:

UserForm1.StartUpPosition = 0
UserForm1.Left = Sheets(1).Cells(10, 10).Left


Anzeige
AW: Objektposition festlegen
18.06.2008 14:17:00
Rudi
Hallo,
das ist falsch!
Die Pos. der Zellen beziehen sich auf das Arbeitsblatt, nicht auf den Bildschirm.
Gruß
Rudi

Richtig - mein Fehler.
18.06.2008 14:23:02
Johannes
Stimmt Rudi, da hab ich wohl zu schnell und einfach gedacht. :-(

AW: Objektposition festlegen
18.06.2008 15:23:31
Richard
Hallo Johannes,
ich hab das trotzdem ausprobiert und Rudi hatte in der Tat recht.
Das hilft mir jetzt aber nicht weiter ich brauche die "absolute" Position des CommandButton-Steuerelements, damit ich mein Zeil verfolgen kann. ;-)
Geht das vielleicht auch mit API-Funktionen?
Gruß
Richard

Anzeige
modFormPositioner
18.06.2008 18:05:37
Johannes
Hallo Richard,
nach langem hin und her an Ueberlegungen, dieses VBA-Modul Goldstueck gefunden:
http://www.cpearson.com/excel/FormPosition.htm
Viel Spass damit. :-)
Gruesse,
Johannes

AW: modFormPositioner
19.06.2008 09:22:00
Richard
Hallo Johannes,
ich glaube, dass das genau das richtige ist, was ich suche. Jedoch stellte ich fest, dass es nur funktioniert wenn oben nur ein CommandBar, bzw. können mehrere nebeneinander sein, aber halt nur in einer Reihe.
Dieses müsste unbedingt dynamisch sein, weil ich ja nicht weiß, wieviel Reihen jeder einzelne User hat, der die Excel-Datei startet.
Leider reicht mein Excel-Wissen noch nicht aus um dieses im vorgegeben Code von dem Pearson anzupassen.
Kennst du vielleicht 'ne Lösung?
MfG
Richard

Anzeige
AW: modFormPositioner
19.06.2008 16:43:33
Johannes
Hallo Richard,
so schwer war das doch jetzt nicht mehr, deine ganzen Anforderungen zu paketieren.
https://www.herber.de/bbs/user/53208.xls
Userbild
Gruesse,
Johannes
Ich sollte doch langsam mal anfangen, meine Amazonwunschliste hier zu publizieren. :-)))

Anzeige
AW: modFormPositioner
20.06.2008 10:01:00
Richard
Hallo Johannes,
ein ganz großes Dankeschön! Klappt eingentlich nicht schlecht!
Habe aber noch keine Plausibilitätskontrolle für alle Bereiche die genutzt werden durchgeführt.
MfG
Richard

AW: modFormPositioner
20.06.2008 13:50:00
Johannes
Hallo Richard,
ich hab das Modul etwas umgeschrieben ... eigentlich duerfte das jetzt klappen, auch bei doppelt, dreifach oder beliebig hohen Commandbars. Pixelgenau wirst du nie positionieren koennen. Aber es ist immerhin ein Workaround, der dich in die richtige Richtung bringt - besser gehts vermutlich auch nicht.
Ueber die beiden Parameter NudgeRight und NudgeDown der Funktin PositionForm kannst du der ganzen Geschichte noch einen manuellen Korrekturversatz mitgeben. Trotzdem - pixelgenau und deckungsgleich in allen Situationen wirds nie klappen.
Gruesse,
Johannes
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Objektposition in Excel festlegen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Zuerst musst du eine UserForm in deinem Excel-Projekt erstellen. Gehe dazu in den VBA-Editor (ALT + F11) und füge eine neue UserForm hinzu.

  2. CommandButton hinzufügen: Füge einen CommandButton zur UserForm hinzu. Du kannst dies einfach per Drag & Drop aus der Toolbox machen.

  3. VBA-Code einfügen: Um die Position des CommandButtons zu ermitteln, füge folgenden VBA-Code in das Modul der UserForm ein:

    Private Sub CommandButton1_Click()
        Dim posX As Single
        Dim posY As Single
    
        ' Berechnung der Position
        posX = CommandButton1.Left + Me.Left
        posY = CommandButton1.Top + Me.Top
    
        ' UserForm positionieren
        UserForm1.Left = posX
        UserForm1.Top = posY + CommandButton1.Height
        UserForm1.Show
    End Sub
  4. Testen: Starte die UserForm und klicke auf den CommandButton. Die UserForm sollte sich direkt unter dem Button öffnen.


Häufige Fehler und Lösungen

  • UserForm öffnet sich nicht: Stelle sicher, dass du die UserForm korrekt im Code aufrufst und dass keine Fehler im VBA-Editor angezeigt werden.

  • Position stimmt nicht: Überprüfe, ob du die .Left und .Top Eigenschaften korrekt addierst. Diese sollten relativ zur UserForm berechnet werden.

  • UserForm wird nicht angezeigt: Achte darauf, dass die UserForm nicht hinter anderen Fenstern verborgen ist, und dass sie im richtigen Kontext (z.B. bei einem Button-Klick) geöffnet wird.


Alternative Methoden

Eine weitere Methode zur Festlegung der Position ist die Verwendung der API-Funktionen. Dies erfordert jedoch etwas mehr VBA-Kenntnisse. Hier ist ein Beispiel, wie du die Position mit API-Funktionen ändern kannst:

Private Declare PtrSafe Function SetWindowPos Lib "user32" ( _
    ByVal hWnd As LongPtr, _
    ByVal hWndInsertAfter As LongPtr, _
    ByVal X As Long, _
    ByVal Y As Long, _
    ByVal cx As Long, _
    ByVal cy As Long, _
    ByVal uFlags As Long) As Long

Sub SetPosition()
    SetWindowPos UserForm1.hWnd, 0, 100, 100, 0, 0, 0
End Sub

Praktische Beispiele

Nehmen wir an, du hast mehrere CommandButtons auf deiner UserForm, und du möchtest, dass die UserForm sich immer unter dem aktuell geklickten Button öffnet. Hier ist ein Beispiel, wie du das umsetzen kannst:

Private Sub CommandButton1_Click()
    OpenUserForm CommandButton1
End Sub

Private Sub CommandButton2_Click()
    OpenUserForm CommandButton2
End Sub

Private Sub OpenUserForm(btn As MSForms.CommandButton)
    UserForm1.Left = btn.Left + Me.Left
    UserForm1.Top = btn.Top + Me.Top + btn.Height
    UserForm1.Show
End Sub

Tipps für Profis

  • Korrekturversatz verwenden: Nutze die Parameter NudgeRight und NudgeDown in der Funktion PositionForm, um die Position der UserForm noch feiner anzupassen.

  • Dynamische Positionierung: Wenn du mit verschiedenen Monitorauflösungen arbeitest, überlege, die Position relativ zur Excel-Anwendung zu berechnen, anstatt feste Pixelwerte zu verwenden.

  • Plausibilitätskontrolle: Baue eine Plausibilitätskontrolle in deinen Code ein, um sicherzustellen, dass die UserForm nicht außerhalb des sichtbaren Bereichs des Bildschirms positioniert wird.


FAQ: Häufige Fragen

1. Wie kann ich die Position der UserForm speichern?
Du kannst die Position der UserForm in einer Variablen speichern und diese bei nachfolgenden Öffnungen verwenden.

2. Funktioniert das auch in Excel 2016?
Ja, die beschriebenen Methoden sind in Excel 2016 sowie in späteren Versionen anwendbar. Achte darauf, die richtigen Referenzen im VBA-Editor zu setzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige