Userform fix über API in EXCEL97 ???+ diverses

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Userform fix über API in EXCEL97 ???+ diverses
von: Zdena
Geschrieben am: 24.11.2003 09:53:51



Hallo zusammen,

ich habe in EXCEL 97 das Problem, dass eine Userform immer im Vordergrund bleiben soll und trotzdem auch die Tabelle im Hintergrund unabhängig davon aktiviert werden kann (editierbar). Bei Excel 2000 ist das wohl mit der Einstellung einer Eigenschaft der Userform möglich. Nicht jedoch bei EXCEL97!

In diesem Forum habe ich dann vor einiger Zeit den Tipp bekommen über API-Funktion das einzustellen:

'Declaration of the API function.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" _
(ByVal hwnd As Long, ByVal bEnable As Long) As Long


'Code executed when the UserForm is opened.
'Indicates that the main window is activated.
Dim hwndXL&
hwndXL = FindWindow("XLMAIN", Application.Caption)
If hwndXL <> 0 Then
EnableWindow hwndXL, 1
End If

Das klappt prima!! Brauche aber noch eine Anpassung:

1 Wie kann ich die Userform fixieren, d.h. der User kann sie auf dem
Bildschirm nicht mehr verschieben!

2 Wenn ich die Menübar von Excel benutzen will geht das nur, wenn ich einen
Doppelklick mache. Dann meldet sich der Office-Assisten und das Anpassen-
Dialog - Fenster. Wenn ich das wegklicke kann ich plötzlich wieder auf die
Menübar zugreifen! Wie kann ich das abstellen? Ich möchte jederzeit ganz
normal die Menübar ansprechen auch wenn diese Userform im Vordergrund
aktiviert ist.

3 Wenn ich die Exceldatei auf einem Laptop laufen lasse sollte die fixe
Userform autom. horizontale Scrollbars bekommen--> Wegen der geringeren
Auflösung passt nicht mehr alles auf den Bilschirm. Die Userform ist im
Prinzip funktional eine spezielle Kommandozentrale für die Tabelle.
Im "Laptopmodus" möchte ich über die horizontale Scrollbar Zugriff haben
auf alle enthaltenen Buttons.

Habt Ihr Ideen und könnt mir helfen? Ist jetzt ziemlich viel, was ich in einem Beitrag frage - ich weiß. Nehmt´s mir nicht übel :-) Würde mich wirklich freuen hier weiterzukommen. Im voraus besten Dank.

Schönen Gruß

Zdena:-)

Bild


Betrifft: Teil 1
von: Nepumuk
Geschrieben am: 24.11.2003 10:01:09

Hallo Zdena,
Die Userform fixirst du so:

Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_BYCOMMAND = &H0
Private Const SC_MOVE = &HF010
Private Sub UserForm_Activate()
    Dim hwndForm As Long, hwndMenu As Long
    hwndForm = FindWindow(vbNullString, Me.Caption)
    If hwndForm <> 0 Then
          hwndMenu = GetSystemMenu(hwndForm, 0)
          If hwndMenu <> 0 Then DeleteMenu hwndMenu, SC_MOVE, MF_BYCOMMAND
    End If
End Sub


Code eingefügt mit: Excel Code Jeanie

Der Code muss in das Modul der Userform.
Gruß
Nepumuk


Bild


Betrifft: AW: Teil 1
von: zdena
Geschrieben am: 24.11.2003 10:41:35



Hallo Nepumuk,

wirklich super. Das nenne ich fixiert. Es weicht keinen mm mehr!
Muss man halt wissen wie es geht. Du hast es gewußt! Danke Dir.
Vielleicht hast Du noch eine Idee zu Teil 2? Du weißt: ich versuche Prinzip Hoffnung :-)

Schönen Gruß

Zdena:-)


Bild


Betrifft: Teil 2 noch offen. Ein Fall für K.Rola?
von: Nepumuk
Geschrieben am: 24.11.2003 10:55:37

Hallo Zdena,
ich denke das ist ein spezielles Problem von Excel97 und über das verfüge ich leider (oder Gott sei Dank?) nicht mehr. Mich wundert es so wie so, daß du auf die Symbolleiste noch irgendwie Zugriff hast.
Gruß
Nepumuk


Bild


Betrifft: AW: Teil 2 noch offen. Ein Fall für K.Rola?
von: K.Rola
Geschrieben am: 24.11.2003 18:41:49

Hallo,

das geht zu machen, ist aber extrem abturzfreudig, daher keine
Tipps von mir dazu.

Gruß K.Rola


Bild


Betrifft: AW: Teil 2 noch offen. Ein Fall für K.Rola?
von: Nepumuk
Geschrieben am: 24.11.2003 19:19:17

Hallo Zdena,
K.Rola hat schon recht, wenn's dauernd abstürzt ist's auch nicht lustig. Warum baust du dir die benötigten Funktionen aus der Symbolleiste nicht einfach in die Userform? Es werden ja nicht alle sein die es gibt.
Gruß
Nepumuk


Bild


Betrifft: AW: Teil 2 noch offen. Ein Fall für K.Rola?
von: K.Rola
Geschrieben am: 24.11.2003 21:22:23

Hallo,

nicht der Gebrauch der Symbolleisten, schon das nicht modale Anzeigen
der userform in Excel 97 ist absturzfeudig.

Fruß K.Rola


Bild


Betrifft: AW: Teil 2 noch offen. Ein Fall für K.Rola?
von: Nepumuk
Geschrieben am: 24.11.2003 22:13:44

Hallo K.Rola,
kannst du mir das erklären, Zdena schreibt, das er nach einem Doppelklick auf die Symbolleiste..... Ich kann da klicken was ich will ich bekomme nur einen Beep. Zumindest bei modaler Anzeige. Ist das in 97 nicht der Fall?
Und noch eine Frage zu einem Beitrag ziemlich weit unten. Wenn ich da was reinschreibe, sehe ich nur z.B. eine 2 und nicht 0x00000002 (2). Muss ich das hexadezimal schreiben (Hex(2))? So viel will ich da nicht herum experimentieren, am Schluss zerschieße ich mir noch die Datenbank.
Gruß
Nepumuk


Bild


Betrifft: AW: Teil 2 noch offen. Ein Fall für K.Rola?
von: K.Rola
Geschrieben am: 24.11.2003 23:20:10

Hallo,

du musst natürlich erst den Code zur pseudo- nichtmodalen Anzeige
ausgeführt haben.


"Und noch eine Frage..."
Wenn du mich sehen könntest, sähest du mich etwas ratlos:
"Und noch eine Frage zu einem Beitrag ziemlich weit unten"

ich weiß nicht, was du da meinst?

Gruß K.Rola


Bild


Betrifft: AW: Teil 2 noch offen. Ein Fall für K.Rola?
von: Nepumuk
Geschrieben am: 25.11.2003 17:35:25

Hallo K.Rola,
da ging es um: Key = "HKCU\Software\Microsoft..................
Gruß
Nepumuk


Bild


Betrifft: Teil 3
von: Bärnd
Geschrieben am: 24.11.2003 10:18:19

Hallo Zdena,

unter NT, w2k oder XP erhältst Du mit Environ("COMPUTERNAME") den Namen des Rechners. Es gibt bestimmt auch eine API-Funktion, um die Bildschirmauflösung auszulesen .. aber die schüttele ich nicht aus den Ärmel.
Um die Scrollbars zu vermeiden und auch am Laptop alles im Blick zu behalten, könntest Du auch die .Zoom Eigenschaft der Userform auf 75 setzen.

Ciao

der Bärnd


Bild


Betrifft: AW: Teil 3
von: Zdena
Geschrieben am: 24.11.2003 10:38:59



Hallo Bärnd,

Danke Dir für Deinen Tip. Das mit dem Zoom-Faktor ist vielleicht garnicht schlecht :-)
Ich werde es mal so machen...

Ciao


Zdena:-)


Bild

Beiträge aus den Excel-Beispielen zum Thema " Userform fix über API in EXCEL97 ???+ diverses"