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

Forumthread: deaktivieren der Application feststellen?

deaktivieren der Application feststellen?
24.08.2008 20:26:00
Jochen
Hi,
lässt sich mit einem Excel-Makro feststellen, ob z.B. mit alt + tab oder durch
klick auf eine taste in der taskleiste ein anderes programm als Excel aktiviert
wurde?
Ich würde gern, dass bei dieser Gelegenheit ein bestimmter Code ausgelöst wird.
mfg Jochen
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: deaktivieren der Application feststellen?
24.08.2008 21:13:00
Nepumuk
Hallo Jochen,
ein Beispielcode.
' **********************************************************************
' 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
AW: deaktivieren der Application feststellen?
25.08.2008 07:43:00
Andre´
Hallo Nepumuk,
habe deinen Code probiert und er funktioniert unter Excel 2003. Bei Excel 2007 findet die Prozedur auch dann statt wenn z.B. die Multifunktionsleiste minimiert wird oder in der Funktionsleiste der Zoomfaktor abgeändert wird.
Gibt es auch dafür eine Lösung!
MFG Andre
AW: deaktivieren der Application feststellen?
25.08.2008 14:50:00
Jochen
Hi,
man, hab ich ein Glück, dass du das gelesen hast.
Konnte es zwar noch nicht probieren, gehe aber davon aus, dass das,
wie immer bei deinen Lösungen, klappt.
Danke und Gruß Jochen
Anzeige
Super! Danke noch mal! oT
25.08.2008 15:33:00
Jochen
j
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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