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

2 Dialoge behindern sich???

2 Dialoge behindern sich?
10.05.2017 16:51:34
Björn
Hallo,
ich habe folgenden Code durch den die Datei - nach einer gewissen Zeit der Untätigkeit - geschlossen wird. Klappt soweit auch ganz gut.
Nur wenn ich eine zweite Datei mit dem selben Code auch geöffnet habe, gelingt dies nicht mehr. Irgendwie scheinen sich die Dialoge zu behindern... Die Infobox erscheint, aber nach Ablauf der Zeit (30s) geschieht nichts mehr...
Ich habe auch schon versucht den subs eindeutige Namen zu geben, je nachdem in welcher Datei sie liegen (damit nicht aus dem einen Dokument das sub der anderen Datei aufgerufen werden)
Wer kann helfen?
Gruss und Danke
Björn
Code in "Diese Arbeitsmappe"

Private Sub Workbook_Open()
MsgBox "Damit die Datei nicht aus versehen geblockt wird, schließt sie sich automatisch nach  _
einer INAKTIVITÄT von 10 Minuten!" & vbNewLine & vbNewLine & "Gemachte Änderungen werden vorher  _
gespeichert!"
Call SetTimer
Worksheets("Start").Select
Range("ProdMittel").Value = "Produktionsmittel"
Range("ProdName").Value = "Produktion"
Range("ProdOrt").Value = "Produktionsort"
Range("UserName").Select
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call StopTimer
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Call StopTimer
Call SetTimer
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
Call StopTimer
Call SetTimer
End Sub

Dann im Modul:
Dim DownTime As Date
Sub SetTimer()
DownTime = Now + TimeValue("00:10:00")
Application.OnTime EarliestTime:=DownTime, Procedure:="MsgClose", Schedule:=True
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=DownTime, Procedure:="MsgClose", Schedule:=False
End Sub
Sub MsgClose()
Dim AckTime As Integer, InfoBox As Object
Dim WkbName As String
WkbName = ThisWorkbook.Name
Set InfoBox = CreateObject("WScript.Shell")
AckTime = 30
Select Case InfoBox.Popup("Die Datei " & WkbName & " schließt sich automatisch in 30  _
Sekunden!" & vbNewLine & vbNewLine & "Gemachte Änderungen werden vorher gespeichert" &  _
vbNewLine & vbNewLine & "Wenn Du mehr Zeit brauchst, klicke auf OK", _
AckTime, "Automatisches Schließen!!!", 0)
Case 1
Call StopTimer
Call SetTimer
MsgBox "Zeit verlängert"
Case -1
Application.DisplayAlerts = False
With ThisWorkbook
.Save
.Close
End With
Exit Sub
End Select
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Timout InfoBox.Popup Problem
10.05.2017 17:44:15
ChrisL
Hi Björn
Eindeutige Namen sind sicherlich eine gute Idee. Dabei die DownTime Variable nicht vergessen.
Es könnte aber auch ein viel allgemeineres Problem sein. Anscheinend ist die InfoBox "kaputt" resp. nicht mehr zuverlässig. Alternativen hier (ich würde vermutlich die Variante mit Userform wählen)...
https://www.herber.de/forum/archiv/1540to1544/1541409_nicht_betaetigte_Msgbox_schliet_Datei.html
Falls wieso und warum interessiert (leider nur englisch):
http://stackoverflow.com/questions/4274103/whats-the-best-way-to-display-a-message-box-with-a-timeout-value-from-vba/35139233#35139233
https://social.technet.microsoft.com/Forums/scriptcenter/en-US/251143a6-e4ea-4359-b821-34877ddf91fb/wshpopup-timeout-bug
Kleiner Input zur Codeoptimierung allgemein. Einmal Select weg...
With Worksheets("Start")
.Range("ProdMittel").Value = "Produktionsmittel"
.Range("ProdName").Value = "Produktion"
.Range("ProdOrt").Value = "Produktionsort"
.Range("UserName") = Environ("Username")
End With
Und nicht vergessen den Timer im Workbook_Close Ereignis stoppen.
cu
Chris
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige