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

Mappe öffnet sich nach schließen selbst

Mappe öffnet sich nach schließen selbst
14.07.2020 18:47:48
wilo
Hallo Zusammen,
Ich habe einen code der bei inaktivität nach 10 Minuten ein Meldungsfeld öffnet.
Dort kann ausgewählt werden ob die Mappe sich nach einer Minute schließen soll, ode
weitergearbeitet wird. Bei Ignoration dieses Meldungsfeldes wird nach einer Minute die Mappe gespeicherund und geschlossen.
Wenn jetzt aber mehrere Excel Mappen geöffnet sind öffnet sich später das Meldungsfeld und die Mappe wird wieder geöffnet.
Viell. kann mir jemand helfen ich komm einfach nicht drauf
Danke in Voraus
GLG
Hier der Code:
Klassenmodul:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Letztes Speicherdatum
Sheets("Stammdaten").Range("J1") = Now()
'Letzter Anwender
Sheets("Stammdaten").Range("I1") = Application.UserName
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
dteCloseTime = Now + TimeSerial(0, lngZeit, 0)
blnCloseNow = False
Application.OnTime dteCloseTime, "DoClose"
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Sheets("Maßnahmenkatalog").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingRows:=True, AllowInsertingRows:=True, AllowFiltering:=True,  _
AllowFormattingCells:=True
Application.Caption = ""
Application.OnTime dteCloseTime, "DoClose", , False
If Workbooks.Count = 1 Then
If Application.DisplayAlerts = False Then Application.DisplayAlerts = True
Application.Quit
End If
End Sub

Private Sub Workbook_Open()
Dim wks As Workshee
On Error Resume Next
Application.OnTime dteCloseTime, "DoClose", , False
dteCloseTime = Now + TimeSerial(0, lngZeit, 0)
blnCloseNow = False
Application.OnTime dteCloseTime, "DoClose"
Set wks = Nothing
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, lngZeit, 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, lngZeit, 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, lngZeit, 0)
blnCloseNow = False
Application.OnTime dteCloseTime, "DoClose"
'Debug.Print dteCloseTime
End Sub
Standardmodul:
Option Explicit
Const lngZeit = 10
Public dteCloseTime As Date, blnCloseNow As Boolean

Public Sub DoClose()
Dim strMsg As String
Dim WshShell As Object
Dim iReturn As Integer
Dim sMessage, sTitel As String
If blnCloseNow = False Then
strMsg = "Diese Datei wurde seit 10 Minuten nicht bearbeitet und" & vbCrLf & _
"wird bei weiterer Inaktivität in 1 Minute geschlossen!" & vbCrLf & _
"Soll die Datei in 1 Minute geschlossen werden?"
Set WshShell = CreateObject("WScript.Shell")
iReturn = WshShell.PopUp(strMsg, 5, ThisWorkbook.Name, _
vbYesNo + vbInformation + vbSystemModal)
Select Case iReturn
Case -1
blnCloseNow = True
dteCloseTime = Now + TimeSerial(0, 1, 0)
Application.OnTime dteCloseTime, "DoClose"
Case vbYes
blnCloseNow = True
dteCloseTime = Now + TimeSerial(0, 1, 0)
Application.OnTime dteCloseTime, "DoClose"
Case vbNo
blnCloseNow = False
dteCloseTime = Now + TimeSerial(0, lngZeit, 0)
Application.OnTime dteCloseTime, "DoClose"
End Select
Else
If ThisWorkbook.Saved = False Then
Application.DisplayAlerts = False
ThisWorkbook.Save 'Close savechanges:=True
Application.DisplayAlerts = True
ThisWorkbook.Close
Else
ThisWorkbook.Close
End If
End If
Debug.Print dteCloseTime
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mappe öffnet sich nach schließen selbst
14.07.2020 18:51:07
Hajo_Zi
lngZeit wird in BeforeColose nicht beendet.

AW: Mappe öffnet sich nach schließen selbst
14.07.2020 19:04:16
wilo
Hallo Hajo,
"lngZeit wird in BeforeColose nicht beendet".
wie kann ich lngZeit sauber beenden?
GLG Lois
AW: Mappe öffnet sich nach schließen selbst
14.07.2020 19:07:02
Hajo_Zi
schreibe die Zeit auf ein Public Variable.
in der Art
On Error Resume Next ' Fehlerbehandlung
Application.OnTime EarliestTime:=DaEt, Procedure:="erste_Farbe", Schedule:=False
Gruß Hajo
AW: Mappe öffnet sich nach schließen selbst
14.07.2020 19:51:35
wilo
Hallo Hajo,
Meinst du so?
die zeit = public
Public Const lngZeit = 10 (im Standardmodul)
Application.OnTime EarliestTime:=dteCloseTime, Procedure:="DoClose", Schedule:=False
glg Lois
Anzeige
AW: Mappe öffnet sich nach schließen selbst
14.07.2020 19:55:48
Hajo_Zi
ich hatte angenommen Du startest die Prozedur immer vzu unterschiedlichen Zeiten.
Das habe ich wohl falsch gesehen und bin Raus
10 ist 11.01.1904 00:00:00 Warum muss es noch Heute gestetet werden mit dieser abgelaufenen Zeit.
Viel erfolg noch.
Gruß Hajo
AW: Mappe öffnet sich nach schließen selbst
14.07.2020 20:07:01
wilo
Hallo Hajo,
Das ist auch so lngZeit ist nur die Zeit in Minuten
dteCloseTime = Now + TimeSerial(0, lngZeit, 0)
Danke dir trotzdem für deine Zeit
lg
AW: Mappe öffnet sich nach schließen selbst
14.07.2020 20:53:55
onur
VBA Gut? Sicher? Und du weisst nicht, wie und wo man Variablen Public deklariert?
Du weisst auch nicht, was ein Klassenmodul ist? Was du als "Klassenmodul" bezeichnest, ist das Modul des Workbook. Ein Klassenmodul ist ein ganz anderes Tier.
Wozu all diese "On Errors" - Völlig überflüssig (wenn man programmieren kann), denn sie verdrängen nur Fehlermeldungen - die Fehler sind trotzdem noch da - du bemerkst sie nur nicht.
Solange du nicht in einem allgemeinen Modul schreibst
Public dteCloseTime

und den Code zum Beenden des Timers nur in Workbook_Deactivate schreibst, wird das nicht klappen, denn wenn beim Beenden abgespeichert wird, wird BeforSave NACH BeforeClose ausgeführt, also wird der Timer neu aktiviert.
Anzeige
AW: Mappe öffnet sich nach schließen selbst
14.07.2020 21:14:19
wilo
Hallo onur
Danke für deine Hilfe habs geändert und es funktioniert
glg
Gerne !
14.07.2020 21:15:47
onur

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige