Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: aktives Fenster wieder in den Vordergrund?

VBA: aktives Fenster wieder in den Vordergrund?
21.10.2004 19:00:48
Reiner
Hallo,
welcher nette Mensch hilft mir kurz weiter: In meinem Makro ist am Ende ein Word-Fenster im Vordergrund. Wie heißt nun die magische Textzeile, die mir nun das aktive Excel-Fenster (und darin die abschließende Message-Box) wieder in den Vordergrund befördert?
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA: aktives Fenster wieder in den Vordergrund?
21.10.2004 19:11:56
Nepumuk
Hallo Reiner,
ein bisschen mehr wie nur eine Zeile ist schon notwendig:


Option Explicit
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As StringByVal lpWindowName As StringAs Long
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As LongByVal hWndInsertAfter As LongByVal As LongByVal As LongByVal cx As LongByVal cy As LongByVal wFlags As Long)
Private Enum Parameter
    HWND_TOPMOST = -1
    HWND_NOTOPMOST = -2
    SWP_NOSIZE = &H1
    SWP_NOMOVE = &H2
    SWP_NOACTIVATE = &H10
End Enum
Public Sub test()
    Dim hWnd As Long
    hWnd = FindWindow("xlMain", vbNullString)
    Application.Wait Time + TimeSerial(0, 0, 5) 'nach dem testen entfernen
    SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE
    SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    MsgBox "Hallo da bin ich", 64, "Information"
End Sub


Gruß
Nepumuk
Anzeige
AW: VBA: aktives Fenster wieder in den Vordergrund?
21.10.2004 19:24:16
Reiner
V...V...vielen Dank
Gruss
Reiner
;
Anzeige
Anzeige

Infobox / Tutorial

VBA: Aktives Fenster wieder in den Vordergrund bringen


Schritt-für-Schritt-Anleitung

Um das aktive Excel-Fenster wieder in den Vordergrund zu bringen, kannst du den folgenden VBA-Code verwenden. Dieser Code verwendet die SetWindowPos-Funktion, um das Excel-Fenster über andere Fenster zu bringen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine Arbeitsmappe)" und wähle Einfügen > Modul.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Option Explicit

Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Sub 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)

Private Enum Parameter
    HWND_TOPMOST = -1
    HWND_NOTOPMOST = -2
    SWP_NOSIZE = &H1
    SWP_NOMOVE = &H2
    SWP_NOACTIVATE = &H10
End Enum

Public Sub BringExcelToFront()
    Dim hWnd As Long
    hWnd = FindWindow("xlMain", vbNullString)

    SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE
    SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    MsgBox "Hallo, da bin ich", 64, "Information"
End Sub
  1. Schließe den VBA-Editor und führe das Makro BringExcelToFront aus, um das Excel-Fenster wieder in den Vordergrund zu bringen.

Häufige Fehler und Lösungen

  • Fehler: "Typ nicht definiert"

    • Stelle sicher, dass du die Option Explicit-Zeile am Anfang deines Moduls hast. Dies hilft, Typfehler zu identifizieren.
  • Fehler: Fenster bleibt im Hintergrund

    • Überprüfe, ob andere Anwendungen wie Word oder Browser im Vordergrund sind. Manchmal wird das Excel-Fenster nicht richtig angezeigt, wenn andere Anwendungen aktiv sind.

Alternative Methoden

Eine weitere Möglichkeit, das Excel-Fenster in den Vordergrund zu bringen, besteht darin, die AppActivate-Methode zu verwenden:

Sub ActivateExcel()
    AppActivate Application.Caption
End Sub

Diese Methode ist einfacher, funktioniert jedoch möglicherweise nicht immer, wenn mehrere Excel-Instanzen geöffnet sind.


Praktische Beispiele

Angenommen, du möchtest nach dem Ausführen eines bestimmten Makros, das Daten verarbeitet, das Excel-Fenster in den Vordergrund bringen. Du kannst den oben genannten BringExcelToFront-Code am Ende deines Makros einfügen, um sicherzustellen, dass die Benutzer die Ergebnisse sofort sehen.


Tipps für Profis

  • Nutze die SetWindowPos-Funktion, um nicht nur das Excel-Fenster, sondern auch andere Fenster zu steuern, indem du die richtigen hWnd-Parameter angibst.
  • Du kannst auch zusätzliche Optionen wie SWP_NOACTIVATE verwenden, um zu verhindern, dass das Fenster den Fokus erhält, während es dennoch sichtbar bleibt.

FAQ: Häufige Fragen

1. Frage
Kann ich diese Methode auch in anderen Office-Anwendungen verwenden?
Ja, die Technik ist nicht auf Excel beschränkt. Du kannst sie auch in Word oder anderen Anwendungen verwenden, indem du den entsprechenden Fenstertitel anpasst.

2. Frage
Was mache ich, wenn das Fenster nicht sichtbar wird?
Stelle sicher, dass das Fenster, das du in den Vordergrund bringen möchtest, nicht minimiert ist und keine anderen Fenster im Weg stehen. Möglicherweise hilft ein Neustart der Anwendung.

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