Discussion:
Bildschirm UserForm
(zu alt für eine Antwort)
Tina Braun
2004-02-10 14:26:52 UTC
Permalink
Hallo NG,

habe folgenden Code, um meine UserForm am unteren Rand zu platzieren.


Private Declare Function EnableWindow Lib "user32" (ByVal _
hwnd As Long, ByVal fEnable As Long) As Long



Private Declare Function GetSystemMetrics Lib _
"user32" (ByVal nIndex As Long) As Long
Private Const SM_CYSCREEN As Long = 1
Private Const SM_CXSCREEN As Long = 0
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd _
As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, _
ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Sub UserForm_Activate()
BildschirmBreite = GetSystemMetrics(SM_CXSCREEN)
Bildschirmhöhe = GetSystemMetrics(SM_CYSCREEN)
UserformBreite = 965
UserformHöhe = 160
wHandle = FindWindow(vbNullString, Me.Caption)
MoveWindow wHandle, BildschirmBreite - UserformBreite, _
Bildschirmhöhe - UserformHöhe, UserformBreite, UserformHöhe, 1

Me.Caption = "DATENEINGABE"
EnableWindow FindWindow("XLMAIN", vbNullString), True
End Sub

Leider kann ich bei Einblendung der UserForm die rechte Bildlaufleiste sowie
die Reiter der anderen Tabellenblätter nicht mehr sehen.
Wie kann ich den Code verändern um dieses Problem zu lösen?

Bin für jede Lösung dankbar.

Gruß
Tina
Wolfram Jahn
2004-02-10 20:02:05 UTC
Permalink
Post by Tina Braun
Leider kann ich bei Einblendung der UserForm die rechte Bildlaufleiste sowie
die Reiter der anderen Tabellenblätter nicht mehr sehen.
Wie kann ich den Code verändern um dieses Problem zu lösen?
Logisch, die Userform-Maße sind OHNE die 'Dekoration' (Scrollbars, Titel,
Fensterränder) gezählt. Es gibt irgendwo auch die Maße des des ganzen Fensters,
sicher wird das hier bald jemand Schlaues posten können, bis dahin kannst Du
einfach ein paar konstante Pixels draufrechnen (20? 22? 25? - irgendsowas), denn
die Dekorationsbreite wechselt nur sehr selten (neue Windows-Version z.B.)
Post by Tina Braun
Bin für jede Lösung dankbar.
Gruß
Tina
--
<Antwort-Adresse: Menschen schreiben an kirchweg, Spam-Robots an ***@kircheweg.de>
Tina Braun
2004-02-11 07:13:51 UTC
Permalink
Hallo Wolfram,

danke für dein posting. Dann werde ich mal voller Geduld abwarten.

Gruß
Tina
Post by Wolfram Jahn
Post by Tina Braun
Leider kann ich bei Einblendung der UserForm die rechte Bildlaufleiste sowie
die Reiter der anderen Tabellenblätter nicht mehr sehen.
Wie kann ich den Code verändern um dieses Problem zu lösen?
Logisch, die Userform-Maße sind OHNE die 'Dekoration' (Scrollbars, Titel,
Fensterränder) gezählt. Es gibt irgendwo auch die Maße des des ganzen Fensters,
sicher wird das hier bald jemand Schlaues posten können, bis dahin kannst Du
einfach ein paar konstante Pixels draufrechnen (20? 22? 25? -
irgendsowas), denn
Post by Wolfram Jahn
die Dekorationsbreite wechselt nur sehr selten (neue Windows-Version z.B.)
Post by Tina Braun
Bin für jede Lösung dankbar.
Gruß
Tina
--
Michael Schwimmer
2004-02-11 11:12:54 UTC
Permalink
Hallo Wolfram,
Post by Wolfram Jahn
Post by Tina Braun
Leider kann ich bei Einblendung der UserForm die rechte
Bildlaufleiste sowie die Reiter der anderen Tabellenblätter nicht
mehr sehen. Wie kann ich den Code verändern um dieses Problem zu
lösen?
Logisch, die Userform-Maße sind OHNE die 'Dekoration' (Scrollbars,
Titel, Fensterränder) gezählt. Es gibt irgendwo auch die Maße des
des ganzen Fensters, sicher wird das hier bald jemand Schlaues
posten können, bis dahin kannst Du einfach ein paar konstante Pixels
draufrechnen (20? 22? 25? - irgendsowas), denn die Dekorationsbreite
wechselt nur sehr selten (neue Windows-Version z.B.)
wie kommst du darauf, dass du mit dem Code an die Maße der Userform
kommst, geschweige denn an die von dessen Clientfenster? Die Maße
sind die des Screens.
GetSystemMetrics(SM_CXSCREEN)
GetSystemMetrics(SM_CYSCREEN)
Und die haben nichts mit der Titelleiste zu tun.

Die Maße der Userform sind dagegen willkürlich festgelegt:
UserformBreite = 965
UserformHöhe = 160

Das Problem ist lediglich, dass die Userform an der rechten unteren Ecke
des Screens ausgerichtet wird. Und dass sie dann Tabellenreiter und
Scrollbars von Excel überdecken kann, ist eigentlich normal. Je größer
die Userform, desto mehr wird überdeckt.
Am einfachsten ist, die Userform etwas weiter nach Links und nach oben
zu verschieben.
MoveWindow wHandle, BildschirmBreite - UserformBreite - 50, _
Bildschirmhöhe - UserformHöhe - 50, UserformBreite, UserformHöhe, 1
Hier sind das 50 Pixel, man muss dann etwas probieren.

MfG
Michael
--
-------------------------------------------
Michael Schwimmer
Home neu: http://michael-schwimmer.de
Tina Braun
2004-02-12 15:21:58 UTC
Permalink
Hallo Michael,

wie einfach doch manchmal die Lösungen sein können. Vielen Dank für Deine
Hilfe.

Gruß
Tina
Post by Tina Braun
Hallo Wolfram,
Post by Wolfram Jahn
Post by Tina Braun
Leider kann ich bei Einblendung der UserForm die rechte
Bildlaufleiste sowie die Reiter der anderen Tabellenblätter nicht
mehr sehen. Wie kann ich den Code verändern um dieses Problem zu
lösen?
Logisch, die Userform-Maße sind OHNE die 'Dekoration' (Scrollbars,
Titel, Fensterränder) gezählt. Es gibt irgendwo auch die Maße des
des ganzen Fensters, sicher wird das hier bald jemand Schlaues
posten können, bis dahin kannst Du einfach ein paar konstante Pixels
draufrechnen (20? 22? 25? - irgendsowas), denn die Dekorationsbreite
wechselt nur sehr selten (neue Windows-Version z.B.)
wie kommst du darauf, dass du mit dem Code an die Maße der Userform
kommst, geschweige denn an die von dessen Clientfenster? Die Maße
sind die des Screens.
GetSystemMetrics(SM_CXSCREEN)
GetSystemMetrics(SM_CYSCREEN)
Und die haben nichts mit der Titelleiste zu tun.
UserformBreite = 965
UserformHöhe = 160
Das Problem ist lediglich, dass die Userform an der rechten unteren Ecke
des Screens ausgerichtet wird. Und dass sie dann Tabellenreiter und
Scrollbars von Excel überdecken kann, ist eigentlich normal. Je größer
die Userform, desto mehr wird überdeckt.
Am einfachsten ist, die Userform etwas weiter nach Links und nach oben
zu verschieben.
MoveWindow wHandle, BildschirmBreite - UserformBreite - 50, _
Bildschirmhöhe - UserformHöhe - 50, UserformBreite, UserformHöhe, 1
Hier sind das 50 Pixel, man muss dann etwas probieren.
MfG
Michael
--
-------------------------------------------
Michael Schwimmer
Home neu: http://michael-schwimmer.de
Michael Schwimmer
2004-02-13 10:16:59 UTC
Permalink
Hallo Tina,
Post by Tina Braun
wie einfach doch manchmal die Lösungen sein können. Vielen Dank für
Deine Hilfe.
freut mich, wenn es dir weitergeholfen hat. Und Danke für die
Rückmeldung.

MfG
Michael
--
-------------------------------------------
Michael Schwimmer
Home neu: http://michael-schwimmer.de
Loading...