Microsoft Excel

Herbers Excel/VBA-Archiv

application.ontime

Betrifft: application.ontime von: Holger
Geschrieben am: 13.02.2008 14:47:41

Hallo,

folgendes Makro sorgt für das Schließen der Datei nach 10 Minuten. wie kann ich verhindern, dass das Ganze weiterläuft, wenn die Datei geschlossen ist. im Moment läuft das so, dass sich die Datei von allein wieder öffnet und dabei auch noch alle anderen offenen Mappen schließt.

unter "diese Arbeitsmappe":

Dim altezeit

    
    Private Sub Workbook_Open()
    On Error Resume Next
    neuezeit = Time + TimeSerial(0, 10, 0)
    Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
    altezeit = neuezeit
    Application.OnTime neuezeit, "Schließen"
    End Sub



    
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    On Error Resume Next
    neuezeit = Time + TimeSerial(0, 10, 0)
    Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
    altezeit = neuezeit
    Application.OnTime neuezeit, "Schließen"
    End Sub



Makro:

Sub Schließen()
ActiveWorkbook.Close savechanges:=True
End Sub


  

Betrifft: AW: application.ontime von: Rudi Maintaire
Geschrieben am: 13.02.2008 14:56:04

Hallo,
setze das
Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
in eine Workbook_beforeclose-Prozedur.

Gruß
Rudi

Eine Kuh macht Muh, viele Kühe machen Mühe


  

Betrifft: AW: application.ontime von: Holger
Geschrieben am: 13.02.2008 15:27:38

so ähnlich? das geht aber irgendwie nicht...

Dim altezeit

 Private Sub Workbook_Open()
 On Error Resume Next
 neuezeit = Time + TimeSerial(0, 0, 60)
 Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
 altezeit = neuezeit
 Application.OnTime neuezeit, "Schließen"
 End Sub



 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 On Error Resume Next
 neuezeit = Time + TimeSerial(0, 0, 60)
 Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
 altezeit = neuezeit
 Application.OnTime neuezeit, "Schließen"
 End Sub



 Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
 End Sub




  

Betrifft: AW: application.ontime von: Daniel
Geschrieben am: 13.02.2008 21:55:52

HI
du musst die beiden Variablen altezeit und neuezeit als PUBLIC im allgemeinen Modul deklarieren:

Option Explicit
Public altezeit
Public neuezeit

Sub Schließen()
ActiveWorkbook.Close savechanges:=True
End Sub



noch besser wäre es, wenn du den Variablen bei der Deklaration gleich den richtigen Datentyp (Date) zuweisen würdest.

Gruß, Daniel


  

Betrifft: AW: application.ontime von: Holger
Geschrieben am: 14.02.2008 15:13:42

es funktioniert doch. Danke!