Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: UserForm immer im Vordergrund halten?

UserForm immer im Vordergrund halten?
28.06.2018 20:37:54
Tim
Hallo Zusammen,
Ich würde gerne eine Webformular öffnen in dem der Nutzer Daten eingeben muss.
Als Spickzettel möchte ich gerne ein UserForm mit 5x5 cm in den Vordergrund bringen.
Also im absoluten Vordergrund über den Browser.
Private Sub UserForm_Activate()
Set wshshell = CreateObject("WScript.Shell")
wshshell.Run "www.google.de"
UserForm1.Show vbModeless
End Sub

Leider bleibt Fenster nur im Hintergrund. Zufällig jemand eine Idee?
Danke &
Grüße der Tim, der auf jeden Fall antwortet!
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm immer im Vordergrund halten?
28.06.2018 23:22:46
Karl-heinz
Hallo Tim,
hier eine Idee, die ich aber nicht testen konnte, probiere es einfach mal aus:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const cFLAGS = SWP_NOMOVE Or SWP_NOSIZE
Private Sub UserForm_Activate()
Set wshshell = CreateObject("WScript.Shell")
wshshell.Run "www.google.de"
UserForm1.Show vbModeless
SetWindowPos FindWindow(vbNullString, UserForm1.Caption), HWND_TOPMOST, 0, 0, 0, 0, cFLAGS
End Sub
Über die API-Funktion SetWindowPos kann ein Fenster im Vordergrund gehalten werden. Hierfür brauchst Du das Handle des betreffenden Fensters, welches über FindWindow ermittelt werden kann.
viele Grüße
Karl-Heinz
Anzeige
AW: UserForm immer im Vordergrund halten?
29.06.2018 08:32:54
Tim
Danke Karl-Heinz,
es ist ja nicht so, dass ich selbst nicht vorher mal google oder die Forensuche benutze ;)
Das was Du gepostet hast ist aus dem Jahre 2007 als es scheinbar noch keine 64bit PC´s gab.
Mein Office stört sich leider an dem "User32".
Wie man daraus eine zeitlich aktuelle Funktion bastelt weiß ich leider nicht ;)
Trotzdem Danke für die Hilfe :-)
Tim
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

UserForm immer im Vordergrund halten


Schritt-für-Schritt-Anleitung

Um eine Excel VBA UserForm immer im Vordergrund zu halten, kannst Du die folgenden Schritte befolgen:

  1. Öffne die VBA-Entwicklungsumgebung in Excel (Alt + F11).

  2. Erstelle eine neue UserForm oder wähle eine bestehende aus.

  3. Füge den folgenden Code in das Modul der UserForm ein:

    Private Sub UserForm_Activate()
       Set wshshell = CreateObject("WScript.Shell")
       wshshell.Run "www.google.de"
       UserForm1.Show vbModeless
       SetWindowPos FindWindow(vbNullString, UserForm1.Caption), HWND_TOPMOST, 0, 0, 0, 0, cFLAGS
    End Sub
  4. Vergiss nicht, die API-Deklarationen am Anfang des Moduls hinzuzufügen:

    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Public Const HWND_TOPMOST = -1
    Public Const HWND_NOTOPMOST = -2
    Public Const cFLAGS = SWP_NOMOVE Or SWP_NOSIZE
  5. Teste die UserForm, um sicherzustellen, dass sie immer im Vordergrund bleibt.


Häufige Fehler und Lösungen

  • Der UserForm bleibt nicht im Vordergrund: Überprüfe, ob der Code korrekt eingefügt ist und alle API-Deklarationen vorhanden sind. Eventuell kann es an der 64-Bit-Version von Excel liegen. Stelle sicher, dass die Deklarationen für 64-Bit angepasst sind.

  • Fehlermeldung beim Kompilieren: Stelle sicher, dass die Namen der UserForm und Variablen korrekt sind. Achte darauf, dass Du die richtige Syntax verwendest.


Alternative Methoden

Wenn die oben genannte Methode nicht funktioniert, kannst Du folgende Alternativen ausprobieren:

  • Timer verwenden: Du kannst ein Timer-Objekt verwenden, um die UserForm regelmäßig in den Vordergrund zu bringen. Setze dafür einen Timer in der UserForm, der alle paar Sekunden den Code zur Fensterposition ausführt.

  • Windows API: Du kannst die API-Funktion SetForegroundWindow verwenden, um das Fenster in den Vordergrund zu bringen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du eine UserForm für Eingaben erstellen kannst, die immer im Vordergrund bleibt:

  1. Erstelle eine UserForm mit einigen Eingabefeldern.
  2. Füge den oben genannten Code ein und passe ihn an Deine UserForm an.
  3. Teste die UserForm, während Du andere Anwendungen geöffnet hast, um zu sehen, ob sie im Vordergrund bleibt.

Tipps für Profis

  • Verwende vbModeless: Stelle sicher, dass Du vbModeless in der Show-Methode verwendest, damit die UserForm nicht modal ist und andere Fenster weiterhin interagiert werden können.

  • Code optimieren: Halte den Code so einfach und effizient wie möglich, um die Leistung zu verbessern. Überflüssige Deklarationen oder unnötige Berechnungen sollten vermieden werden.


FAQ: Häufige Fragen

1. Warum bleibt meine UserForm nicht immer im Vordergrund?
Es kann an der Version von Excel liegen. Stelle sicher, dass Du die richtigen API-Deklarationen für 32-Bit oder 64-Bit verwendet hast.

2. Welche Excel-Version benötige ich für diese Funktion?
Die Funktion sollte in den meisten modernen Excel-Versionen funktionieren, aber speziell in Excel 2010 und später sind die API-Funktionen stabiler.

3. Gibt es eine Möglichkeit, die UserForm nur vor bestimmten Anwendungen anzuzeigen?
Ja, Du kannst die Fenster-Handles der spezifischen Anwendungen verwenden, um die UserForm entsprechend zu positionieren.

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