Hallo,
ich habe derzeit folgende Situation, welche mir ständig einen Strich durch die Rechnung machen möchte:
Der Nutzer befindet sich in Bedarfsanzeige.xlsm und möchte gerne in Lieferante.xlsm einen neuen Lieferant hinzufügen und dann wieder zurück in Bedarfsanzeige.xlsm. Nun habe ich aber in Lieferante.xlsm eine Automatische Schließung mit eingebunden, welche die Datei nach 5 Minuten schließen soll, wenn sie nicht mehr bearbeitet wird. Sobald ich aber wieder in Bedarfsanzeige.xlsm wechsel, bekomme ich nach 4 Minuten die Benachrichtigung der Automatischen Schließung, obwohl Lieferante.xlsm geschlossen ist, nicht mehr in der Taskleiste angezeigt wird und auch nicht mehr in Visual Basic zu sehen ist.
Der Code, welchen ich für das wechseln der Dateien verwende:
Workbooks.Open (Datei)
ThisWorkbook.Close SaveChanges:=True
Der Code, welchen ich für die Automatische Schließung verwende:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
End Sub
Private Sub Workbook_Open()
dteCloseTime = Now + TimeSerial(0, 4, 0)
Application.OnTime dteCloseTime, "DoClose"
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
dteCloseTime = Now + TimeSerial(0, 4, 0)
blnCloseNow = False
Application.OnTime dteCloseTime, "DoClose"
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
dteCloseTime = Now + TimeSerial(0, 4, 0)
blnCloseNow = False
Application.OnTime dteCloseTime, "DoClose"
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
dteCloseTime = Now + TimeSerial(0, 4, 0)
blnCloseNow = False
Application.OnTime dteCloseTime, "DoClose"
End Sub
Option Explicit
Public dteCloseTime As Date, blnCloseNow As Boolean
Public Sub DoClose()
Dim strMsg As String
If blnCloseNow = False Then
strMsg = "Diese Datei wurde seit 4 Minuten nicht bearbeitet und" & vbCrLf & _
"wird bei weiterer Inaktivität in 1 Minute geschlossen."
CreateObject("WScript.Shell").PopUp strMsg, 10, ThisWorkbook.Name, _
vbOKOnly + vbInformation + vbSystemModal
blnCloseNow = True
dteCloseTime = Now + TimeSerial(0, 1, 0)
Application.OnTime dteCloseTime, "DoClose"
Else
If Workbooks.Count = 1 Then
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If
Application.Quit
Else
ThisWorkbook.Close True
End If
End If
End Sub
Übersehe ich hier irgendwo einen wichtigen Punkt, oder weshalb wird der Code weiterhin ausgeführt, obwohl die Datei nicht mehr geöffnet ist ?
Gruß Lukas
|