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

vba Code ausführen, bei Wechsel zu Excel

vba Code ausführen, bei Wechsel zu Excel
Karsten
Hallo und guten Abend,
ich wechsel von einer Internetseite mit der Tastenkombination Alt Tab zu Excel.
Bislang habe ich den vba Code einem Button zugewiesen und über diesen ausgeführt.
Nun soll dieser vba Code ausgeführt werden, wenn Excel den Focus erhält, wenn das entsprechende Arbeitsblatt aktiv ist.
Geht so etwas?
Wenn ja, wie?
Gruß Karsten

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

Betreff
Benutzer
Anzeige
AW: vba Code ausführen, bei Wechsel zu Excel
14.08.2009 21:53:59
Nepumuk
Hallo Karsten,
ein Beispielcode:
In das Modul "DieseArbeitsmappe":
Option Explicit

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

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

In ein Standardmodul:
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: vba Code ausführen, bei Wechsel zu Excel
14.08.2009 22:23:16
Karsten
Hallo Nepumuk,
vielen Dank für die Unterstützung.
Leider ist meine Datei nun abgestürzt.
Gibt es wie bei Access eine Tastenkombination, die verhindert, dass der vbacode ausgeführt wird?
Habe leider keine Sicherungskopie zuvor angelegt.
Wieder so ein dummer Anfängerfehler
Gruß Karsten
AW: vba Code ausführen, bei Wechsel zu Excel
14.08.2009 22:41:45
Daniel
Hi
normalerweise, bei vernünftier Sicherheitseinstellung (mittel) wird man beim Start einer Excel-Datei gefragt, ob die Makros ausgeführt werden sollen oder nicht, da kann man dann "nein" auswählen und die Datei öffnen, ohne das Makros ausgeführt werden, man kann dann die Makros ändern und löschen, aber nicht ausführen.
bei einer schon gestarteten Datei kann man in den Entwurfmodus wechseln und so das automatische Ausführen von Event-Makros verhindern.
den Button hierzu findet man in der in den Menüleisten "Steuerelemente" und "Visual Basic"
Gruß, Daniel
Anzeige
AW: vba Code ausführen, bei Wechsel zu Excel
14.08.2009 22:47:26
Karsten
Hallo Daniel,
danke für den Tipp.
Ich versuchs mal.
Melde mich später noch einmal.
VG Karsten
AW: vba Code ausführen, bei Wechsel zu Excel
14.08.2009 23:01:28
Karsten
Hallo Nepumuk,
hallo Daniel,
Dank euer beider Hilfe habe ich nun genau die gewünschte Funktionalität.
Danke, Danke Danke
Gruß Karsten

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige