Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
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

Ereignis beim Aktivieren von Excel

Ereignis beim Aktivieren von Excel
Excel
Liebe Leute,
gibt es ein Ereignis, das Eintritt, wenn die Excel-Anwendung den Focus erhält, also zum Bearbeiten 'nach oben' geholt wird?
Danke für Eure Hilfe
Gruß Markus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
gibt's nicht owT
17.03.2011 14:20:14
Rudi
AW: gibt's nicht owT
17.03.2011 14:36:34
Nepumuk
Hallo,
lässt sich aber mit einem Timer relativ leicht verwirklichen:
' **********************************************************************
' 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()
    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
Private Declare Function GetActiveWindow Lib "user32.dll" () As Long

Private blnActiv As Boolean

Public Sub prcStart()
    blnActiv = True
    Call SetTimer(Application.hwnd, 0, 500, AddressOf prcTimer)
End Sub

Public Sub prcStop()
    Call KillTimer(Application.hwnd, 0)
End Sub

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

    If GetActiveWindow = Application.hwnd 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
Geht nicht - gibt's nicht
17.03.2011 15:58:00
Matthias
Hallo Nepumuk,
geht nicht - gibt's nicht!
Das scheint bei Dir ja oft so zu sein :-)
Deshalb meine Frage in diesem Zusammenhang:
Kann Excel auch feststellen, wenn seine Fenstergröße geändert wurde? Also nicht das Ereignis Workbook_WindowResize(), das ja nur dür das Fenster gilt, sondern wenn das gesamte Excel-Fenster seine Größe ändert.
Lässt sich das auch "nachbauen"?
Gruß Matthias
Moment mal, eigentlich...
17.03.2011 16:03:20
Matthias
..müsste ich das selbst hinkriegen.
Einfach in der Prozedur prcTimer die Fenstergröße von Excel mit den letzten Werten vergleichen.
Was ist denn eigentlich der Vorteil der API-Funktion SetTimer gegenüber der .OnTime-Prozedur?
Gruß Matthias
Anzeige
AW: Moment mal, eigentlich...
17.03.2011 18:52:11
Nepumuk
Hallo,
den Timer per API kann ich in Millisekundentakt laufen lassen, OnTime nur im Sekundentakt. Der API-Timer läuft auch wenn du im Eingabemodus bist, OnTime steht in dem Moment. Ist allerdings auch gefährlich wenn du mit dem API-Timer etwas in die Tabelle eintragen lässt. Bist du im Eingabemodus, stürtzt dir Excel ab wenn der Timer etwas in eine Zelle schreiben will.
Gruß
Nepumuk
AW: Moment mal, eigentlich...
17.03.2011 19:39:36
Matthias
Hallo Nepumuk,
Danke für die Info.
Also das Risiko des Absturzes besteht nur, wenn die per SetTimer aufgerufene Prozedur eine Zelle beschreiben will, während Excel im Eingabemodus ist?
Dann wäre das ja kein Hindernis, solange ich nur die .Zoom-Eigenschaft verändern will, oder?
Gibt es denn eine Möglichkeit, in der Prozedur abzufragen ob Excel im Eingabemodus ist?
Grüße,
Matthias
Anzeige
AW: Moment mal, eigentlich...
17.03.2011 20:15:38
Nepumuk
Hallo Matthias,
ich denke die Zoom-Eigenschaft kannst du gefahrlos verstellen. Und nein, es gibt keine Möglichkeit zu prüfen ob Excel im EIngabemodus ist.
Gruß
Nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige