Anzeige
Archiv - Navigation
1004to1008
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

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

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
Super! Danke noch mal! oT
25.08.2008 15:33:00
Jochen
j
bei 2007 funzt es nicht richtig
25.08.2008 16:38:00
Andre´
Hallo,
ich lasse den Beitarg mal offen, weil ich gern die Lösung mit Excel 2007 realisieren möchte.
Siehe Frage
https://www.herber.de/forum/messages/1004356.html
MFG Andre
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige