API - Timer - VBE!

The API - Functions "SetTimer" and "KillTimer" examine the call of the VBA - editor, since opening does not release an event. In my example the timer is addressed over buttons and it is only indicated in cell A1 whether the VBA - editor is visible or not with "YES" or "NO". You can the controlling of the timer also over "Workbook_Open" and "Workbook_Deactivate" realize. Likewise a macro can be started instead of the expenditure in cell A1. The files at the end of the article are Excelfiles of the version 2003 and 2007. The following code belonged in "Module1".


Die API - Funktionen "SetTimer" und "KillTimer" prüfen den Aufruf des VBA - Editors, da das Öffnen kein Ereignis auslöst. In meinem Beispiel wird der Timer über Buttons angesprochen und es wird nur in Zelle A1 angezeigt ob der VBA - Editor sichtbar ist oder nicht mit "YES" oder "NO". Du kannst die Steuerung des Timers auch über "Workbook_Open" und "Workbook_Deactivate" realisieren. Ebenso kann ein Makro gestartet werden statt der Ausgabe in Zelle A1. Die Dateien am Ende des Artikels sind Exceldateien der Version 2003 und 2007. Der folgende Code gehört in "Modul1".


Option Explicit

Declare Function KillTimer Lib "user32.dll" _
(ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
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 lngTimer As Long
Const TIMERYES = &H113

Public Sub Start_Timer()
lngTimer = SetTimer(0&, 0&, 800, AddressOf V_B_E)
End Sub

Public Sub Kill_Timer()
KillTimer 0&, lngTimer
End Sub

Private Sub V_B_E(ByVal hWnd As Long, ByVal uMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long)
On Error Resume Next
Sheet1.Cells(1, 1).Value = IIf(uMsg = TIMERYES And _
Application.VBE.MainWindow.Visible, "YES...", "NO...")
On Error GoTo 0
End Sub


Sample 2003

Sample 2007

Kommentare

Beliebte Posts aus diesem Blog

Formeln - auch Array - per VBA eintragen...

Alle Dateien eines Ordners - Optional mit Unterordner

Excel -> Word in Textmarken (Bookmarks)...