Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1144to1148
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
Inhaltsverzeichnis

Event-Ereignis "Excel erhält/verliert Fokus"?

Event-Ereignis "Excel erhält/verliert Fokus"?
Guido
Hallo.
Ich habe ein Makro, das die Bildschirmauflösung umstellt, wenn eine Datei geöffnet wird und sie wieder zurückstellt, wenn die Datei geschlossen wird (Workbook_Open / Workbook_BeforeClose).
Nun wollen wir die Umstellung dann haben, wenn Excel den Fokus bekommt (z.B. weil man mit einem anderen Programm gearbeitet hat) bzw. wieder verliert. Welcher Event ist dafür zuständig? Am liebsten bitte mit Beispiel.
Danke, Guido

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Dafür gibts keinen Event!
16.03.2010 13:57:33
Renee
Hallo Guido,
Das kannst du nicht innerhalb EXCEL mit VBA programmieren, sondern nur von aussen mit einem Process-Monitor und das liegt vermutlich ausserhalb deiner Reichweite!
Es ist mir schleierhaft wie man auf solchen Lösungsansätze kommt. EXCEL hat doch auch eine Zoom-Funktion.
GreetZ Renée
AW: Dafür gibts keinen Event!
16.03.2010 14:06:53
Guido
Ja, weiß schon, das war ja auch meine Idee.
Die Vorgabe mit der Veränderung der Auflösung hab ich mir nicht selbst ausgedacht ...
Trotzdem danke.
Guido
AW: Dann machen wir einfach einen
16.03.2010 17:17:13
Nepumuk
Hi,
was nicht geht, bekommt Räder verpasst, damit das Ding rollt:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call prcStop
End Sub

Private Sub Workbook_Open()
    blnActiv = True
    Call prcStart
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit
Option Private Module

Private Declare Function SetTimer Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long) As Long
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function GetActiveWindow Lib "user32.dll" () As Long

Private Const GC_CLASSNAMEMSEXCEL = "XLMAIN"

Private lnghWnd As Long
Public blnActiv As Boolean

Public Sub prcStart()
    lnghWnd = FindWindow(GC_CLASSNAMEMSEXCEL, Application.Caption)
    Call SetTimer(lnghWnd, 0, 100, AddressOf TimerProc)
End Sub

Public Sub prcStop()
    Call KillTimer(lnghWnd, 0)
End Sub

Private Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, _
        ByVal uElapse As Long, ByVal lpTimerFunc As Long)

    If GetActiveWindow = lnghWnd Then
        If Not blnActiv Then
            Call prcYour_Procedur 'Aufruf deiner Prozedur
            blnActiv = True
        End If
    Else
        blnActiv = False
    End If
End Sub

Private Sub prcYour_Procedur() 'Deine Prozedur
    Static intIndex As Integer
    intIndex = intIndex + 1
    MsgBox "Excel agree focus " & CStr(intIndex) & ". time", 64, "Info"
End Sub

Gruß
Nepumuk
Anzeige
Danke, interessanterweise....
16.03.2010 17:32:48
NoNet
Hallo Nepumuk,
danke auch von meiner Seite für dieses Codebeispiel !
Interessanterweise wird das Event auch dann ausgelöst, wenn innerhalb der Mappe ein Tabellenblatt gelöscht wird.
Verliert die Excel-Applikation dabei temporär den Focus oder den Handle ?
Gruß, NoNet
AW: Danke, interessanterweise....
17.03.2010 14:55:16
Nepumuk
Hallo NoNet,
klar, kommt doch eine MsgBox in den Vordergrund. Es erfolgt (noch) keine Abfrage, ob das ein Childwindow ist. Aber du darfst natürlich gerne weiterbasteln.
Gruß
Nepumuk

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige