Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei bei Untätigkeit schließen

Datei bei Untätigkeit schließen
11.09.2008 10:12:39
Werner
Hallo!
Sicher bin ich blind oder so...
Aber ich finde keine passende Lösung.
Mehrere Dateien sind offen.
Eine spezielle davon soll nach 5 Minuten Untätigkeit ohne zu speichern automatisch geschlossen werden.
Kann jemand helfen?
Gruß
Werner

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei bei Untätigkeit schließen
11.09.2008 10:41:27
Tobias
Hallo Werner!
Mit der Funktion Application.OnTime. Hier ein Beispiel wie eine solche Funtion ausschauen könnte. Die Funktion muss bei jeder Änderung über ein Event neu ausgeführt werden.
'time-Variable
Dim time As Double
Sub CloseAfter5Minutes()
    '"CloseTheWorkbook" ist der Name der aufzurufenden Funktion
    'Timer auf 4 Sekunden
    'Den alte OnTime-Funktion "löschen"
    On Error Resume Next
    Application.OnTime time, "CloseTheWorkbook", , False
    On Error GoTo 0
    'Neuen Timer setzen
    time = Now + TimeValue("00:00:04")
    Call Application.OnTime(time, "CloseTheWorkbook")
End Sub
Gruß, Tobi
http://vba-blog.de/
AW: Datei bei Untätigkeit schließen
Tobias

Hier mal eine Musterdatei.
https://www.herber.de/bbs/user/55317.xls
Gruß, Tobi
http://vba-blog.de
AW: Datei bei Untätigkeit schließen
Werner

Das Beispiel war super.
Klappt prima!
VIELEN DANK!!!
Gruß
Werner
AW: Datei bei Untätigkeit schließen
Werner

Habe da noch was...
Kann man das mit der Zeitschleife irgendwie am Ende auch wieder stoppen.
Nach einer Weile kommen seltsame Meldungen, dass er die Datei, die sich geschlossen hat, nicht finden kann.
Gruß
Werner
AW: Datei bei Untätigkeit schließen
Tobias

Ich hatte die Hoffnung, dass dieses Event das machen sollte.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Die alte OnTime-Funktion "löschen"
    On Error Resume Next
    Application.OnTime time, "CloseTheWorkbook", , False
    On Error GoTo 0
End Sub
AW: Datei bei Untätigkeit schließen
Werner

Auch das bringt nicht den gewünschten Erfolg. Leider.
AW: ich kann das nicht nachvollziehen...
Chris

...das Ganze funktioniert einwandfrei, hast du die Makros im richtigen Modul (DieseArbeitsmappe).
Gruß
Chris
Ich kann das auch nicht nachvollziehen...
Tobias

Bei mir klappt's auch.
AW: Ich kann das auch nicht nachvollziehen...
Werner

Also so sieht das bei mir aus:
"Diese Arbeitsmappe":
Dim time As Double

Public Sub CloseAfter5Minutes()
'Die alte OnTime-Funktion "löschen"
On Error Resume Next
Application.OnTime time, "CloseTheWorkbook", , False
On Error GoTo 0
'Neuen Timer setzen
time = Now + TimeValue("00:05:00")
Call Application.OnTime(time, "CloseTheWorkbook")
End Sub


und:


Private Sub Workbook_BeforeClose(cancel As Boolean)
On Error Resume Next
Application.OnTime time, "CloseTheWorkbook", , False
On Error GoTo 0
Application.WindowState = xlMaximized
ScrollbereichVollstaendig
LöscheSymbolleiste
ThisWorkbook.Saved = True
End Sub


"Tabelle1":


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call ThisWorkbook.CloseAfter5Minutes
End Sub


Modul:


Public Sub CloseTheWorkbook()
'MsgBox "jetzt"
ThisWorkbook.Close
End Sub


Würde mich nicht wundern, wenn ich was falsch gemacht hätte. ;-))
Kann es daran liegen, dass 2 Andere Exceldateien noch offen bleiben?
Genau das will ich nämlich auch.
Gruß
Werner

AW: Ich kann das auch nicht nachvollziehen...
Chris

Servus,
ich kann da nichts Falsches entdecken:
2 Anmerkungen:

Public Sub CloseTheWorkbook()
'MsgBox "jetzt"
ThisWorkbook.Close False ' ohne Speicherabfrage
End Sub


2. der Timer wird nur neu gestartet, wenn in Tabelle1 was gemacht wird, wenn die anderen Tabellen geändert werden, dann geht die Datei trotzdem nach 5 Minuten zu.
Evtl. für alle sheets:
Workbook_SheetSelectionChange (in das Modul DieseArbeitsmappe) statt Worksheet_Change(in Tabelle1).
Hast du evtl noch ein weiters Before_Close-Ereignis ?
Gruß
Chris

AW: Ich kann das auch nicht nachvollziehen...
Werner

Das hier läuft noch:

Private Sub Workbook_close()
LöscheSymbolleiste
Application.WindowState = xlMaximized
'kill
End Sub


Aber das sollte doch nicht stören, oder?

AW: Ich kann das auch nicht nachvollziehen...
Tino

Hallo,
so müsste es funktionieren.
Microsoft Excel Objekt DieseArbeitsmappe
'In DieseArbeismappe ************************************** 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
     On Error Resume Next 
     Application.OnTime time, "CloseTheWorkbook", , False 
     On Error GoTo 0 
     Application.WindowState = xlMaximized 
     ScrollbereichVollstaendig 
     LöscheSymbolleiste 
     ThisWorkbook.Saved = True 
End Sub 
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
Call CloseAfter5Minutes 
End Sub 

Modul Modul1

'in ein Modul ****************************************** 
Option Explicit 
Public time As Double 
 
Sub CloseAfter5Minutes() 
  
 'Die alte OnTime-Funktion "löschen" 
     On Error Resume Next 
     Application.OnTime time, "CloseTheWorkbook", , False 
     On Error GoTo 0 
     'Neuen Timer setzen 
     time = Now + TimeValue("00:01:00") 
     Call Application.OnTime(time, "CloseTheWorkbook") 
 End Sub 
 
Sub CloseTheWorkbook() 
     'MsgBox "jetzt" 
     ThisWorkbook.Close 
End Sub 
 


Gruß Tino

AW: Ich kann das auch nicht nachvollziehen...
Werner

Ich habe alles so eingeben.
Leider bringt er mir immer noch nach einer Weile Meldungen, nachdem die Datei geschlossen wurde.
Erst wenn ich die 2. noch offene Excel-Datei schließe - also Excel komplett - ist es gut.
Aber so soll das nicht sein.
AW: Poste mal die Datei...
Chris

... alles andere ist Rätselraten. Komischerweise funktioniert das ja bei allen anderen, nur bei dir nicht.
Gruß
Chris
AW: Ich kann das auch nicht nachvollziehen...
Tino

Hallo,
so habe dies nochmals ausführlich getestet und so umgestellt wie ich dies immer mache.
(bezüglich Variablen)
Die Zeit steht auf 10 Sekunden, stelle diese in der Zeile
TimeSerial(0, 0, 10) ein. (TimeSerial(Stunden,Minuten,Sekunden)
Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
     On Error Resume Next 
      Application.OnTime earliesttime:=time, procedure:="CloseTheWorkbook", schedule:=False 
     On Error GoTo 0 
     Application.WindowState = xlMaximized 
     ScrollbereichVollstaendig 
     LöscheSymbolleiste 
     ThisWorkbook.Saved = True 
End Sub 
  
Private Sub Workbook_Open() 
Call CloseAfter5Minutes 
End Sub 
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
Call CloseAfter5Minutes 
End Sub 
 

Modul Modul1

'in ein Modul ****************************************** 
Option Explicit 
Public timer As Variant 
  
Sub CloseAfter5Minutes() 
   
 'Die alte OnTime-Funktion "löschen" 
     On Error Resume Next 
      Application.OnTime earliesttime:=timer, procedure:="CloseTheWorkbook", schedule:=False 
     On Error GoTo 0 
     'Neuen Timer setzen 
     timer = Format(Now + TimeSerial(0, 0, 10), "hh:mm:ss") 
     Application.OnTime TimeValue(timer), "CloseTheWorkbook" 
 End Sub 
  
Sub CloseTheWorkbook() 
     'MsgBox "jetzt" 
     ThisWorkbook.Close 
End Sub 
Sub ScrollbereichVollstaendig() 
 
End Sub 
Sub LöscheSymbolleiste() 
 
End Sub 


Gruß Tino

AW: Ich kann das auch nicht nachvollziehen...
Werner

Es geht immer noch nicht.
Hier mal die ganze Datei.
Ich bin mir fast sicher, dass ich in irgendeinem Makro etwas reingebastelt habe, dass diese Probleme verursacht.
https://www.herber.de/bbs/user/55378.xlt
Bis hier hin schon mal DANKE für die Hilfe!!!
Gruß
Werner
AW: Ich kann das auch nicht nachvollziehen...
Chris

Servus,
du hattest die Sub CloseAfter5Minutes 2 mal drin stehen, vllt. deswegen. Ich hab die eine gelöscht und das funktioniert einwandfrei.
https://www.herber.de/bbs/user/55388.xls
Es steht noch in Modul11.
Gruß
Chris
AW: Ich kann das auch nicht nachvollziehen...
Werner

Ich glaube jetzt passt es.
Ich habe allerdings auch noch 2 Fehler entdeckt:
im Code

Public Sub CloseAfter5Minutes()
'Die alte OnTime-Funktion "löschen"
On Error Resume Next
Application.OnTime time, "CloseTheWorkbook", , False
On Error GoTo 0
'Neuen Timer setzen
time = Now + TimeValue("00:00:30")
Call Application.OnTime(time, "CloseTheWorkbook")
End Sub


fehlte beim ersten "CloseTheWorkbook" das 'e' bei close.
Außerdem hatte ich den Code 2 Mal drin.
Jetzt scheint es zu gehen.
Echt super, wie man hier weitergeholfen wird. ;-)
VIELEN DANK für die Hilfe!!!
Gruß
Werner

AW: Datei bei Untätigkeit schließen
Chris

Servus Werner,
im Prinzip so:
in DieseArbeitsmappe:
Dim altezeit

Private Sub Workbook_Open()
On Error Resume Next
neuezeit = Time + TimeSerial(0, 5, 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, 5, 0)
Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
altezeit = neuezeit
Application.OnTime neuezeit, "Schließen"
End Sub


in ein Modul:
Sub Schließen()
MsgBox "jetzt zu"
ThisWorkbook.Close False
End Sub


Hierbei werden allerdings nur wirkliche Änderungen der Zelladressen registriert. Evtl. kann man das auch über Workbook_Activate satt Worsheet_SelectionChange machen, wenn das "benutzt" auch das Anschauen beinhalten soll.
Gruß
Chris

Anzeige
AW: Datei bei Untätigkeit schließen
11.09.2008 11:00:44
Werner
Das Beispiel war super.
Klappt prima!
VIELEN DANK!!!
Gruß
Werner
AW: Datei bei Untätigkeit schließen
11.09.2008 11:27:57
Werner
Habe da noch was...
Kann man das mit der Zeitschleife irgendwie am Ende auch wieder stoppen.
Nach einer Weile kommen seltsame Meldungen, dass er die Datei, die sich geschlossen hat, nicht finden kann.
Gruß
Werner
AW: Datei bei Untätigkeit schließen
11.09.2008 11:34:00
Tobias
Ich hatte die Hoffnung, dass dieses Event das machen sollte.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Die alte OnTime-Funktion "löschen"
    On Error Resume Next
    Application.OnTime time, "CloseTheWorkbook", , False
    On Error GoTo 0
End Sub
AW: Datei bei Untätigkeit schließen
Werner

Auch das bringt nicht den gewünschten Erfolg. Leider.
AW: ich kann das nicht nachvollziehen...
Chris

...das Ganze funktioniert einwandfrei, hast du die Makros im richtigen Modul (DieseArbeitsmappe).
Gruß
Chris
Ich kann das auch nicht nachvollziehen...
Tobias

Bei mir klappt's auch.
AW: Ich kann das auch nicht nachvollziehen...
Werner

Also so sieht das bei mir aus:
"Diese Arbeitsmappe":
Dim time As Double

Public Sub CloseAfter5Minutes()
'Die alte OnTime-Funktion "löschen"
On Error Resume Next
Application.OnTime time, "CloseTheWorkbook", , False
On Error GoTo 0
'Neuen Timer setzen
time = Now + TimeValue("00:05:00")
Call Application.OnTime(time, "CloseTheWorkbook")
End Sub


und:


Private Sub Workbook_BeforeClose(cancel As Boolean)
On Error Resume Next
Application.OnTime time, "CloseTheWorkbook", , False
On Error GoTo 0
Application.WindowState = xlMaximized
ScrollbereichVollstaendig
LöscheSymbolleiste
ThisWorkbook.Saved = True
End Sub


"Tabelle1":


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call ThisWorkbook.CloseAfter5Minutes
End Sub


Modul:


Public Sub CloseTheWorkbook()
'MsgBox "jetzt"
ThisWorkbook.Close
End Sub


Würde mich nicht wundern, wenn ich was falsch gemacht hätte. ;-))
Kann es daran liegen, dass 2 Andere Exceldateien noch offen bleiben?
Genau das will ich nämlich auch.
Gruß
Werner

AW: Ich kann das auch nicht nachvollziehen...
Chris

Servus,
ich kann da nichts Falsches entdecken:
2 Anmerkungen:

Public Sub CloseTheWorkbook()
'MsgBox "jetzt"
ThisWorkbook.Close False ' ohne Speicherabfrage
End Sub


2. der Timer wird nur neu gestartet, wenn in Tabelle1 was gemacht wird, wenn die anderen Tabellen geändert werden, dann geht die Datei trotzdem nach 5 Minuten zu.
Evtl. für alle sheets:
Workbook_SheetSelectionChange (in das Modul DieseArbeitsmappe) statt Worksheet_Change(in Tabelle1).
Hast du evtl noch ein weiters Before_Close-Ereignis ?
Gruß
Chris

AW: Ich kann das auch nicht nachvollziehen...
Werner

Das hier läuft noch:

Private Sub Workbook_close()
LöscheSymbolleiste
Application.WindowState = xlMaximized
'kill
End Sub


Aber das sollte doch nicht stören, oder?

AW: Ich kann das auch nicht nachvollziehen...
Tino

Hallo,
so müsste es funktionieren.
Microsoft Excel Objekt DieseArbeitsmappe
'In DieseArbeismappe ************************************** 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
     On Error Resume Next 
     Application.OnTime time, "CloseTheWorkbook", , False 
     On Error GoTo 0 
     Application.WindowState = xlMaximized 
     ScrollbereichVollstaendig 
     LöscheSymbolleiste 
     ThisWorkbook.Saved = True 
End Sub 
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
Call CloseAfter5Minutes 
End Sub 

Modul Modul1

'in ein Modul ****************************************** 
Option Explicit 
Public time As Double 
 
Sub CloseAfter5Minutes() 
  
 'Die alte OnTime-Funktion "löschen" 
     On Error Resume Next 
     Application.OnTime time, "CloseTheWorkbook", , False 
     On Error GoTo 0 
     'Neuen Timer setzen 
     time = Now + TimeValue("00:01:00") 
     Call Application.OnTime(time, "CloseTheWorkbook") 
 End Sub 
 
Sub CloseTheWorkbook() 
     'MsgBox "jetzt" 
     ThisWorkbook.Close 
End Sub 
 


Gruß Tino

AW: Ich kann das auch nicht nachvollziehen...
Werner

Ich habe alles so eingeben.
Leider bringt er mir immer noch nach einer Weile Meldungen, nachdem die Datei geschlossen wurde.
Erst wenn ich die 2. noch offene Excel-Datei schließe - also Excel komplett - ist es gut.
Aber so soll das nicht sein.
AW: Poste mal die Datei...
Chris

... alles andere ist Rätselraten. Komischerweise funktioniert das ja bei allen anderen, nur bei dir nicht.
Gruß
Chris
AW: Ich kann das auch nicht nachvollziehen...
Tino

Hallo,
so habe dies nochmals ausführlich getestet und so umgestellt wie ich dies immer mache.
(bezüglich Variablen)
Die Zeit steht auf 10 Sekunden, stelle diese in der Zeile
TimeSerial(0, 0, 10) ein. (TimeSerial(Stunden,Minuten,Sekunden)
Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
     On Error Resume Next 
      Application.OnTime earliesttime:=time, procedure:="CloseTheWorkbook", schedule:=False 
     On Error GoTo 0 
     Application.WindowState = xlMaximized 
     ScrollbereichVollstaendig 
     LöscheSymbolleiste 
     ThisWorkbook.Saved = True 
End Sub 
  
Private Sub Workbook_Open() 
Call CloseAfter5Minutes 
End Sub 
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
Call CloseAfter5Minutes 
End Sub 
 

Modul Modul1

'in ein Modul ****************************************** 
Option Explicit 
Public timer As Variant 
  
Sub CloseAfter5Minutes() 
   
 'Die alte OnTime-Funktion "löschen" 
     On Error Resume Next 
      Application.OnTime earliesttime:=timer, procedure:="CloseTheWorkbook", schedule:=False 
     On Error GoTo 0 
     'Neuen Timer setzen 
     timer = Format(Now + TimeSerial(0, 0, 10), "hh:mm:ss") 
     Application.OnTime TimeValue(timer), "CloseTheWorkbook" 
 End Sub 
  
Sub CloseTheWorkbook() 
     'MsgBox "jetzt" 
     ThisWorkbook.Close 
End Sub 
Sub ScrollbereichVollstaendig() 
 
End Sub 
Sub LöscheSymbolleiste() 
 
End Sub 


Gruß Tino

AW: Ich kann das auch nicht nachvollziehen...
Werner

Es geht immer noch nicht.
Hier mal die ganze Datei.
Ich bin mir fast sicher, dass ich in irgendeinem Makro etwas reingebastelt habe, dass diese Probleme verursacht.
https://www.herber.de/bbs/user/55378.xlt
Bis hier hin schon mal DANKE für die Hilfe!!!
Gruß
Werner
AW: Ich kann das auch nicht nachvollziehen...
Chris

Servus,
du hattest die Sub CloseAfter5Minutes 2 mal drin stehen, vllt. deswegen. Ich hab die eine gelöscht und das funktioniert einwandfrei.
https://www.herber.de/bbs/user/55388.xls
Es steht noch in Modul11.
Gruß
Chris
AW: Ich kann das auch nicht nachvollziehen...
Werner

Ich glaube jetzt passt es.
Ich habe allerdings auch noch 2 Fehler entdeckt:
im Code

Public Sub CloseAfter5Minutes()
'Die alte OnTime-Funktion "löschen"
On Error Resume Next
Application.OnTime time, "CloseTheWorkbook", , False
On Error GoTo 0
'Neuen Timer setzen
time = Now + TimeValue("00:00:30")
Call Application.OnTime(time, "CloseTheWorkbook")
End Sub


fehlte beim ersten "CloseTheWorkbook" das 'e' bei close.
Außerdem hatte ich den Code 2 Mal drin.
Jetzt scheint es zu gehen.
Echt super, wie man hier weitergeholfen wird. ;-)
VIELEN DANK für die Hilfe!!!
Gruß
Werner

AW: Datei bei Untätigkeit schließen
Chris

Servus Werner,
im Prinzip so:
in DieseArbeitsmappe:
Dim altezeit

Private Sub Workbook_Open()
On Error Resume Next
neuezeit = Time + TimeSerial(0, 5, 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, 5, 0)
Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
altezeit = neuezeit
Application.OnTime neuezeit, "Schließen"
End Sub


in ein Modul:
Sub Schließen()
MsgBox "jetzt zu"
ThisWorkbook.Close False
End Sub


Hierbei werden allerdings nur wirkliche Änderungen der Zelladressen registriert. Evtl. kann man das auch über Workbook_Activate satt Worsheet_SelectionChange machen, wenn das "benutzt" auch das Anschauen beinhalten soll.
Gruß
Chris

Anzeige
AW: Datei bei Untätigkeit schließen
11.09.2008 11:51:00
Werner
Auch das bringt nicht den gewünschten Erfolg. Leider.
AW: ich kann das nicht nachvollziehen...
11.09.2008 12:13:00
Chris
...das Ganze funktioniert einwandfrei, hast du die Makros im richtigen Modul (DieseArbeitsmappe).
Gruß
Chris
Ich kann das auch nicht nachvollziehen...
11.09.2008 13:08:18
Tobias
Bei mir klappt's auch.
AW: Ich kann das auch nicht nachvollziehen...
11.09.2008 13:30:28
Werner
Also so sieht das bei mir aus:
"Diese Arbeitsmappe":
Dim time As Double

Public Sub CloseAfter5Minutes()
'Die alte OnTime-Funktion "löschen"
On Error Resume Next
Application.OnTime time, "CloseTheWorkbook", , False
On Error GoTo 0
'Neuen Timer setzen
time = Now + TimeValue("00:05:00")
Call Application.OnTime(time, "CloseTheWorkbook")
End Sub


und:


Private Sub Workbook_BeforeClose(cancel As Boolean)
On Error Resume Next
Application.OnTime time, "CloseTheWorkbook", , False
On Error GoTo 0
Application.WindowState = xlMaximized
ScrollbereichVollstaendig
LöscheSymbolleiste
ThisWorkbook.Saved = True
End Sub


"Tabelle1":


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call ThisWorkbook.CloseAfter5Minutes
End Sub


Modul:


Public Sub CloseTheWorkbook()
'MsgBox "jetzt"
ThisWorkbook.Close
End Sub


Würde mich nicht wundern, wenn ich was falsch gemacht hätte. ;-))
Kann es daran liegen, dass 2 Andere Exceldateien noch offen bleiben?
Genau das will ich nämlich auch.
Gruß
Werner

Anzeige
AW: Ich kann das auch nicht nachvollziehen...
11.09.2008 13:46:00
Chris
Servus,
ich kann da nichts Falsches entdecken:
2 Anmerkungen:

Public Sub CloseTheWorkbook()
'MsgBox "jetzt"
ThisWorkbook.Close False ' ohne Speicherabfrage
End Sub


2. der Timer wird nur neu gestartet, wenn in Tabelle1 was gemacht wird, wenn die anderen Tabellen geändert werden, dann geht die Datei trotzdem nach 5 Minuten zu.
Evtl. für alle sheets:
Workbook_SheetSelectionChange (in das Modul DieseArbeitsmappe) statt Worksheet_Change(in Tabelle1).
Hast du evtl noch ein weiters Before_Close-Ereignis ?
Gruß
Chris

Anzeige
AW: Ich kann das auch nicht nachvollziehen...
11.09.2008 15:20:00
Werner
Das hier läuft noch:

Private Sub Workbook_close()
LöscheSymbolleiste
Application.WindowState = xlMaximized
'kill
End Sub


Aber das sollte doch nicht stören, oder?

AW: Ich kann das auch nicht nachvollziehen...
11.09.2008 20:44:00
Tino
Hallo,
so müsste es funktionieren.
Microsoft Excel Objekt DieseArbeitsmappe
'In DieseArbeismappe ************************************** 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
     On Error Resume Next 
     Application.OnTime time, "CloseTheWorkbook", , False 
     On Error GoTo 0 
     Application.WindowState = xlMaximized 
     ScrollbereichVollstaendig 
     LöscheSymbolleiste 
     ThisWorkbook.Saved = True 
End Sub 
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
Call CloseAfter5Minutes 
End Sub 

Modul Modul1

'in ein Modul ****************************************** 
Option Explicit 
Public time As Double 
 
Sub CloseAfter5Minutes() 
  
 'Die alte OnTime-Funktion "löschen" 
     On Error Resume Next 
     Application.OnTime time, "CloseTheWorkbook", , False 
     On Error GoTo 0 
     'Neuen Timer setzen 
     time = Now + TimeValue("00:01:00") 
     Call Application.OnTime(time, "CloseTheWorkbook") 
 End Sub 
 
Sub CloseTheWorkbook() 
     'MsgBox "jetzt" 
     ThisWorkbook.Close 
End Sub 
 


Gruß Tino

Anzeige
AW: Ich kann das auch nicht nachvollziehen...
12.09.2008 10:42:00
Werner
Ich habe alles so eingeben.
Leider bringt er mir immer noch nach einer Weile Meldungen, nachdem die Datei geschlossen wurde.
Erst wenn ich die 2. noch offene Excel-Datei schließe - also Excel komplett - ist es gut.
Aber so soll das nicht sein.
AW: Poste mal die Datei...
12.09.2008 14:22:40
Chris
... alles andere ist Rätselraten. Komischerweise funktioniert das ja bei allen anderen, nur bei dir nicht.
Gruß
Chris
AW: Ich kann das auch nicht nachvollziehen...
12.09.2008 15:29:00
Tino
Hallo,
so habe dies nochmals ausführlich getestet und so umgestellt wie ich dies immer mache.
(bezüglich Variablen)
Die Zeit steht auf 10 Sekunden, stelle diese in der Zeile
TimeSerial(0, 0, 10) ein. (TimeSerial(Stunden,Minuten,Sekunden)
Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
     On Error Resume Next 
      Application.OnTime earliesttime:=time, procedure:="CloseTheWorkbook", schedule:=False 
     On Error GoTo 0 
     Application.WindowState = xlMaximized 
     ScrollbereichVollstaendig 
     LöscheSymbolleiste 
     ThisWorkbook.Saved = True 
End Sub 
  
Private Sub Workbook_Open() 
Call CloseAfter5Minutes 
End Sub 
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
Call CloseAfter5Minutes 
End Sub 
 

Modul Modul1

'in ein Modul ****************************************** 
Option Explicit 
Public timer As Variant 
  
Sub CloseAfter5Minutes() 
   
 'Die alte OnTime-Funktion "löschen" 
     On Error Resume Next 
      Application.OnTime earliesttime:=timer, procedure:="CloseTheWorkbook", schedule:=False 
     On Error GoTo 0 
     'Neuen Timer setzen 
     timer = Format(Now + TimeSerial(0, 0, 10), "hh:mm:ss") 
     Application.OnTime TimeValue(timer), "CloseTheWorkbook" 
 End Sub 
  
Sub CloseTheWorkbook() 
     'MsgBox "jetzt" 
     ThisWorkbook.Close 
End Sub 
Sub ScrollbereichVollstaendig() 
 
End Sub 
Sub LöscheSymbolleiste() 
 
End Sub 


Gruß Tino

Anzeige
AW: Ich kann das auch nicht nachvollziehen...
15.09.2008 10:16:00
Werner
Es geht immer noch nicht.
Hier mal die ganze Datei.
Ich bin mir fast sicher, dass ich in irgendeinem Makro etwas reingebastelt habe, dass diese Probleme verursacht.
https://www.herber.de/bbs/user/55378.xlt
Bis hier hin schon mal DANKE für die Hilfe!!!
Gruß
Werner
AW: Ich kann das auch nicht nachvollziehen...
15.09.2008 13:52:39
Chris
Servus,
du hattest die Sub CloseAfter5Minutes 2 mal drin stehen, vllt. deswegen. Ich hab die eine gelöscht und das funktioniert einwandfrei.
https://www.herber.de/bbs/user/55388.xls
Es steht noch in Modul11.
Gruß
Chris
Anzeige
AW: Ich kann das auch nicht nachvollziehen...
15.09.2008 14:18:00
Werner
Ich glaube jetzt passt es.
Ich habe allerdings auch noch 2 Fehler entdeckt:
im Code

Public Sub CloseAfter5Minutes()
'Die alte OnTime-Funktion "löschen"
On Error Resume Next
Application.OnTime time, "CloseTheWorkbook", , False
On Error GoTo 0
'Neuen Timer setzen
time = Now + TimeValue("00:00:30")
Call Application.OnTime(time, "CloseTheWorkbook")
End Sub


fehlte beim ersten "CloseTheWorkbook" das 'e' bei close.
Außerdem hatte ich den Code 2 Mal drin.
Jetzt scheint es zu gehen.
Echt super, wie man hier weitergeholfen wird. ;-)
VIELEN DANK für die Hilfe!!!
Gruß
Werner

Anzeige
AW: Datei bei Untätigkeit schließen
11.09.2008 10:58:00
Chris
Servus Werner,
im Prinzip so:
in DieseArbeitsmappe:
Dim altezeit

Private Sub Workbook_Open()
On Error Resume Next
neuezeit = Time + TimeSerial(0, 5, 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, 5, 0)
Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
altezeit = neuezeit
Application.OnTime neuezeit, "Schließen"
End Sub


in ein Modul:
Sub Schließen()
MsgBox "jetzt zu"
ThisWorkbook.Close False
End Sub


Hierbei werden allerdings nur wirkliche Änderungen der Zelladressen registriert. Evtl. kann man das auch über Workbook_Activate satt Worsheet_SelectionChange machen, wenn das "benutzt" auch das Anschauen beinhalten soll.
Gruß
Chris

Anzeige

303 Forumthreads zu ähnlichen Themen


Hallo Hans,
wenn ich die URLs richtig interpretiere, haben wir im Forum soeben die Zahl von 1 Million Beiträgen überschritten.
Herzlichen Glückwunsch zu dem Erfolg Deines "Babys"!
Gruß
Martin
Anzeige

Hallo zusammen!
Ich habe da als blutiger Anfänger in VBA zwei Fragen:
1.) Wie kann ich in meiner Tabelle in jeder zweiten Spalte 4 leere Spalten einfügen lassen?
2.) Dann möchte ich unter den Inhalt der ersten fünf Spalten (A-E) den Inhalt der zweiten 5 Spalten (F-J) usw. In der grö...

Guten Morgen!
Ich hätte folgendes Problem: Ich erhalte automatisiert Exceltabellen, bei denen nicht alle Zellen einer Zeile gefüllt werden, wenn dort der Inhalt einer darüberliegenden Zeile stehen sollte. Zur Weiterverarbeitung muss ich aber diese Zellen mit den dazugehörigen Werten füllen....
Anzeige

Hallo zusammen,
ich habe eine lange Liste, in der in einer Spalte Daten stehen, wo ab und zu vorangehende Nullen nötig sind (mal eine - mal 2...etc.) - und manchmal auch keine.
Wie kann ich diese Zellen formatieren, das die vorangehenden "Nullen" nicht automatisch weggelassen werden?

Hallo Excel-Profis
ich habe folgenden Code in ein Makro eingebaut:
'Drucken mit Vorschau
Application.ActivePrinter = "\\dataserv\HP LaserJet 5L AV auf Ne05:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True, Collate:= _
True
Hier wird der Standard-Drucker an...

Hallo,
Ich brauche dringend Eure Hilfe. Unter https://www.herber.de/bbs/user/54533.xls findet Ihr eine Mappe, in welcher in Spalte A
1 für "Kaufen"
0 für " "
-1 für "Verkaufen"
steht. IN SPALTE B SIND BISHER NUR MANUELL ERSTELLTE BEISPIELEINTRÄGE ENTHALTEN, DAMIT ERSICHTLIC...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige