title image


Smiley Für alle die es interessiert... (Timer und AfterSave in Excel)
So ungefähr wie in dem Artikel http://spotlight.de/zforen/mse/m/mse-1092343147-5866.html hatte ich es schonmal versucht, aber es klappte nicht. Der oben genannte Beitrag hat mir aber schon um einiges weitergeholfen und nach ein bisschen editieren habe ich dann für alle die es interessiert folgende Lösung, um immer den aktuellen Namen des Arbeitsblattes in einer Zelle anzugeben, (selbst nach Speichern Unter -> Neuer Name):



In das Codefenster von "Diese Arbeitsmappe":







Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    On Error GoTo Ende

    If SaveAsUI = True Then

        Cancel = True

        Application.EnableEvents = False

        Application.Dialogs(xlDialogSaveAs).Show

        Tabelle1.Range("A1").Value = ActiveWorkbook.Name

        ActiveWorkbook.Save

Ende:

        Application.EnableEvents = True

    End If

    On Error GoTo 0

End Sub



Code eingefügt mit Syntaxhighlighter 2.5











Und desweiteren für alle die es interessiert, wie man einen Timer in Excel realisiert:



Folgenden Code in ein Modul:







Option Explicit



'API-Deklaration

Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID _

        As Long) As Long

        

Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay _

        As Long, ByVal uResolution As Long, ByVal lpFunction _

        As Long, ByVal dwUser As Long, ByVal uFlags As Long) _

        As Long

        

Global Timer1 As Long 'Variable für den Timer



Public Sub RunTimer(ID As Long, Msg As Long, LngUser As Long, Lng1 As Long, Lng2 As Long)

    'Das ist die Ereignisroutine, die der Timer nach Ablauf des Intervalls immer wieder aufruft, _

    genauso wie beim VB-eigenen Timer ...

End Sub





Code eingefügt mit Syntaxhighlighter 2.5











So und nun kann von überall im Dokument aus folgender Code eingesetzt werden:









Option Explicit





Public Sub StartTimer(Intervall As Long)

    'Routine um den Timer in Gang zu setzen, als Parameter wird die Intervall- _

    länge in ms angegeben. Aufruf erfolgt z.B. im Click-Ereignis eines CommandButtons _

    mit Call StartTimer(1000) 1000 für eine Sekunde

    If Timer1 <> 0 Then Call StopTimer

    Timer1 = timeSetEvent(Intervall, 30000, AddressOf RunTimer, 0, 1)

End Sub



Public Sub StopTimer()

'Routine um den Timer wieder anzuhalten. _

Aufruf sollte klar sein

    If Timer1 <> 0 Then

        timeKillEvent Timer1

        Timer1 = 0

    End If

End Sub





Code eingefügt mit Syntaxhighlighter 2.5







Viele Grüße und viel Spaß damit

One Love,

  Gereon



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: