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 CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Userform platzieren | Herbers Excel-Forum


Betrifft: Userform platzieren von: David
Geschrieben am: 01.02.2012 14:48:34

Hallo zusammen,

ich rufe eine Userform mit

Private Sub CommandButton1_Click()
Navigation.Show vbModeless
End Sub
auf. Dabei wird diese immer in der Mitte des Bildschirms angezeigt, egal, welche Position sie vorher hatte.
Kann man eine Userform an einer bestimmten Stelle "erscheinen" lassen (z. Bsp. am rechten Bildschirmrand) und wenn ja, wie ist die Syntax dafür?

Danke.

Gruß
David

  

Betrifft: Me.Left = 100: Me.Top = 300 von: NoNet
Geschrieben am: 01.02.2012 14:54:08

Hallo David,

kopiere folgenden Code in das Klassenmodul des UserForms :

Private Sub UserForm_Activate()
    Me.Left = 100    'horizontaler Abstand vom linken Bildschirm-Rand
    Me.Top = 300     'vertikaler Abstand vom oberen Bildschirm-Rand
End Sub
Gruß, NoNet


  

Betrifft: AW: Me.Left = 100: Me.Top = 300 von: David
Geschrieben am: 01.02.2012 15:09:19

Hallo NoNet,

das wird leider ignoriert. Egal, welche Werte ich eintrage, die Position ist die wie in den Eigenschaften festgelegt.

Gruß
David


  

Betrifft: Hmmm - in Excel 2010 klappt das... _oT von: NoNet
Geschrieben am: 01.02.2012 15:15:38

_oT = "ohne Text"


  

Betrifft: AW: Userform platzieren von: David
Geschrieben am: 01.02.2012 14:54:47

Ok, habe jetzt in den Eigenschaften gefunden, dass man "Startup-Position" auf manuell stellen muss und dann die Left-Eigenschaft für die Position genommen wird.
Was mache ich aber, wenn die dadurch errechnete Position (wegen anderer Bildschirmauflösung) außerhalb des Bildschirmes liegt und dann die Form ggf. nicht angezeigt wird? Kann man die Auflösung abfragen und dann beim Initialisieren der Form die Position mitgeben? Wenn ja, wie?

Gruß
David


  

Betrifft: Bildschirmauflösung ermitteln von: NoNet
Geschrieben am: 01.02.2012 15:00:42

Hallo David,

das ist eine Standard-Frage, die seit Jahren regelmässig in Excel-Foren gestellt und beantwortet wird.
Die Antwort ist natürlich absolut *GEHEIM* - aber ich habe sie "geknackt" - hier der Code zum Knacken :



Gruß, NoNet


  

Betrifft: MIST - Code war ZU *GEHEIM* ;-) von: NoNet
Geschrieben am: 01.02.2012 15:03:33

Hallo David,


Mein Code war wohl ZU *GEHEIM* - ich hatte den Präfix http:// vergessen - hier der passende "Code" :

;-))

Gruß, NoNet


  

Betrifft: AW: Bildschirmauflösung ermitteln von: David
Geschrieben am: 01.02.2012 15:04:29

Super! Danke! Schnelle Hilfe!

"Die von Ihnen aufgerufene Seite wurde leider nicht gefunden. Versuchen Sie bitte, über die linke Navigationsleiste zu der gesuchten Seite zu kommen. "

Das man die Position ermitteln kann, weiß ich und würde ich sicher auch im Archiv finden, aber wie ich das variabel der Form zuweisen kann, habe ich nicht gefunden!

Nun tu mal bitte nicht so, als ob ich der Erste bin, der Fragen stellt, die schon im Archiv zu finden sind!

Trotzdem Danke!

Gruß
David


  

Betrifft: Nee, nicht der ERSTE, aber der zig-Hunderste ;-) von: NoNet
Geschrieben am: 01.02.2012 15:14:11

Hallo David,

ist ja nicht böse gemeint, aber : Du bist garantiert NICHT der ERSTE, der diese Frage gestellt hat - sondern ganz im Gegenteil : diese Frage hatten sicherlich schon einige (untertrieben !) HUNDERTE Excel-Anwender, daher besteht eine grosse Chance, dass diese Frage schon zigmal beantwortet wurde.

Bevor ein Helfer also "mühsam" eine Antwort erstellt, hast Du (oder Ich oder ein anderer PC-User, der eine Suchmaschine "füttern" kann), die passende Antwort per GOOGLE (oder einer anderen Suchmaschine Deines Vertrauens) selbst sehr schnell gefunden.

Ergo : Ist kein Vorwurf, sondern nur eine kleine "Erinnerung", wie man diese Standardfrage selbst beantworten könnte ;-)

Salut, viel Erfolg, NoNet

PS : Ich würde den Code in diesem Beitrag bevorzugen :
http://www.office-loesung.de/ftopic125045_0_0_asc.php


  

Betrifft: AW: Nee, nicht der ERSTE, aber der zig-Hunderste ;-) von: David
Geschrieben am: 01.02.2012 15:20:01

Schon Ok, du hast ja Recht!!! Ich versuche, mich zu bessern.

Leider scheitert der Code Private Declare

Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long mit der Meldung:

"Nach End Sub
, End

Function oder End Property können nur Kommentare stehen"

Muss da wieder irgendeine Library oder Addin etc. eingebunden werden oder was könnte das Problem sein?

Gruß
DAvid


  

Betrifft: AW: Nee, nicht der ERSTE, aber der zig-Hunderste ;-) von: David
Geschrieben am: 01.02.2012 15:22:05

Ups, hier nochmal "ordentlich" formatiert:

Leider scheitert der Code

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

mit der Meldung:
"Nach End Sub, End Function oder End Property können nur Kommentare stehen"

Muss da wieder irgendeine Library oder Addin etc. eingebunden werden oder was könnte das Problem sein?

Gruß
DAvid


  

Betrifft: AW: Nee, nicht der ERSTE, aber der zig-Hunderste ;-) von: Rudi Maintaire
Geschrieben am: 01.02.2012 15:25:21

Hallo,
Private Declare .... muss ganz oben im Modul stehen vor der ersten Sub/Function.

Gruß
Rudi


  

Betrifft: AW: Nee, nicht der ERSTE, aber der zig-Hunderste ;-) von: David
Geschrieben am: 01.02.2012 15:27:39

Ok, das klappt.

Woher soll man denn SOWAS wissen?! ;-(

Danke und Gruß
David


  

Betrifft: Das ist wirklich NICHT leicht erkennbar von: NoNet
Geschrieben am: 01.02.2012 15:39:22

Hallo David

Woher soll man denn SOWAS wissen?! ;-(

Da gebe ich Dir Recht ! - Das ist wirklich nicht intuitiv erlernbar und auch ansonsten nicht einfach zu erkennen.
Das kann man eigentlich nur aus Büchern, Erfahrung und/oder vielen Foren-Beiträgen nachlesen bzw. ableiten. Wenn man allerdings (wie Du jetzt) einmal in diese Falle getappt ist, erhöht sich die Chance, dass man sich das merkt enorm. Insofern kann man das als "Lerneffekt" verbuchen ;-)

In der VBA-Onlinehilfe (zumindest zu Excel 2010) findet man diesen Hinweis auch (sehr versteckt) :

Hilfe zu DECLARE aufrufen, dort steht gleich zu Beginn :
Deklariert auf Modulebene Verweise auf externe Prozeduren in einer Dynamic Link Library (DLL) or code resource (Macintosh).
Hier dann auf den Link "Modulebene" anklicken, dort erscheint (siehe letzten Satz zu "Deklarationen") :
Modulebene
Beschreibt den Code in dem Deklarationsabschnitt eines Moduls. 
Jeder Code außerhalb einer Prozedur verweist auf Modulebenen-Code.
Deklarationen müssen zuerst aufgelistet werden, danach folgen die Prozeduren.
Solch unmöglich versteckte "Hilfe"-Konstrukte findet man in der VBA-Hilfe leider ständig - hier ist eine grosse Frustrationstoleranz notwendig, um dadurch zu lernen..... :-(

Gruß, NoNet


  

Betrifft: AW: Das ist wirklich NICHT leicht erkennbar von: David
Geschrieben am: 01.02.2012 15:46:02

Das "...jetzt) einmal in diese Falle getappt ist, erhöht sich die Chance, dass man sich das merkt enorm. Insofern kann man das als "Lerneffekt" verbuchen ;-)..." stimmt natürlich.

Ich habe aber gerade noch ein weiteres "Problem" festgestellt:

Meine Form hat eine Breite (width) von 100. Mein Bildschirm eine Auflösung von 1680x1050. somit würde ich erwarten, das bei Left = 1580 die Form am rechten Rand erscheint. Tatsächlich muss ich aber ca. 1180 einstellen, dann ist der rechte Rand der Form am rechten Bildschirmrand.
Wird hier mit verschiedenen Rastern gearbeitet?

Gruß
David


  

Betrifft: Ja, leider : Pixel und Points von: NoNet
Geschrieben am: 01.02.2012 15:55:52

Hallo David,

Wird hier mit verschiedenen Rastern gearbeitet?

Ja, leider "rechnet" Excel mit verschiedenen Einheiten (mind. mit Pixeln und Points - evtl. auch mit Pitches).
Das hängt mit der Bildschirmauflösung und der Bildpunktbreite zusammen - genau erklären kann ich es auch nicht :-(

Siehe mal hier (und natürlich bei GOOGLE ;-) :
http://office.microsoft.com/en-us/excel-help/measurement-units-and-rulers-in-excel-HP001151724.aspx
http://www.mrexcel.com/forum/showthread.php?t=134163

Gruß, NoNet


  

Betrifft: AW: Ja, leider : Pixel und Points von: David
Geschrieben am: 01.02.2012 16:01:15

Ok, hatte schon sowas geahnt. Der Link hat aber geholfen. Screen-Breite / 192 * 144 - dann hat man den "richtigen" Wert.

Nochmals vielen Dank!!!

Gruß
David


  

Betrifft: ohne ScreenResolution von: Rudi Maintaire
Geschrieben am: 01.02.2012 16:07:39

Hallo,
vielleicht reicht dir ja auch

Private Sub UserForm_Activate()
  Left = Application.Left + Application.Width - Width
End Sub

Gruß
Rudi


Beiträge aus den Excel-Beispielen zum Thema "Userform platzieren"