Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
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
Userform platzieren
David
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
Me.Left = 100: Me.Top = 300
01.02.2012 14:54:08
NoNet
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
AW: Me.Left = 100: Me.Top = 300
01.02.2012 15:09:19
David
Hallo NoNet,
das wird leider ignoriert. Egal, welche Werte ich eintrage, die Position ist die wie in den Eigenschaften festgelegt.
Gruß
David
Hmmm - in Excel 2010 klappt das... _oT
01.02.2012 15:15:38
NoNet
_oT = "ohne Text"
AW: Userform platzieren
01.02.2012 14:54:47
David
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
Anzeige
Bildschirmauflösung ermitteln
01.02.2012 15:00:42
NoNet
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
MIST - Code war ZU *GEHEIM* ;-)
01.02.2012 15:03:33
NoNet
Hallo David,
Mein Code war wohl ZU *GEHEIM* - ich hatte den Präfix http:// vergessen - hier der passende "Code" :
;-))
Gruß, NoNet
Anzeige
AW: Bildschirmauflösung ermitteln
01.02.2012 15:04:29
David
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
Nee, nicht der ERSTE, aber der zig-Hunderste ;-)
01.02.2012 15:14:11
NoNet
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
Anzeige
AW: Nee, nicht der ERSTE, aber der zig-Hunderste ;-)
01.02.2012 15:20:01
David
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
AW: Nee, nicht der ERSTE, aber der zig-Hunderste ;-)
01.02.2012 15:22:05
David
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
Anzeige
AW: Nee, nicht der ERSTE, aber der zig-Hunderste ;-)
01.02.2012 15:25:21
Rudi
Hallo,
Private Declare .... muss ganz oben im Modul stehen vor der ersten Sub/Function.
Gruß
Rudi
AW: Nee, nicht der ERSTE, aber der zig-Hunderste ;-)
01.02.2012 15:27:39
David
Ok, das klappt.
Woher soll man denn SOWAS wissen?! ;-(
Danke und Gruß
David
Das ist wirklich NICHT leicht erkennbar
01.02.2012 15:39:22
NoNet
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
Anzeige
AW: Das ist wirklich NICHT leicht erkennbar
01.02.2012 15:46:02
David
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
Anzeige
Ja, leider : Pixel und Points
01.02.2012 15:55:52
NoNet
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
Anzeige
AW: Ja, leider : Pixel und Points
01.02.2012 16:01:15
David
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
ohne ScreenResolution
01.02.2012 16:07:39
Rudi
Hallo,
vielleicht reicht dir ja auch
Private Sub UserForm_Activate()
Left = Application.Left + Application.Width - Width
End Sub

Gruß
Rudi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen