Herbers Excel-Forum - das Archiv

Countdown

Bild

Betrifft: Countdown
von: Konni

Geschrieben am: 18.02.2005 19:01:30
Hallo Freaks,
ich habe einen Countdown, der die Tabelle nach einer Startzeit von 1 Minute bei Inaktivität abspeichert und automatisch schließt, damit Kollegen im Netzwerk auch daran arbeiten können.
Bei Erreichen von 30 Sekunden ertönt ein Klingelton, bei kleiner/gleich 5 Sekunden pro Sekunde ein Piep.
Wenn ich die Startzeit auf 5 Minuten einstelle, so passiert das Ganze wiederholt im Minutenrythmus. - Wie kann ich dies auf kleiner 1 Minute beschränken?
Der Code: If Second(.Value) = 30 Then ....
Besten Dank für Eure Hilfe
Konni
Bild

Betrifft: AW: Countdown
von: Konni

Geschrieben am: 18.02.2005 19:09:03
Hier der kompltte Code:
Option Explicit
Public ET As Variant
Public DaZeit As Date
Private Declare
Function sndPlaySound32 Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
Sub Zeitmakro()
With ThisWorkbook.Worksheets("Maßnahmen 2005").Range("A10")
.Value = .Value - CDate("00:00:01")
If .Value <> 0 Then
ET = Now + TimeValue("00:00:01")
If Second(.Value) = 30 Then
Call sndPlaySound32("C:\Winnt\media\klingel.wav", 1)
End If
If Second(.Value) <= 5 Then
Call sndPlaySound32("C:\Winnt\media\ding.wav", 1)
End If
Application.OnTime ET, "Zeitmakro"
Else
ThisWorkbook.Close True 'speichern
' Meldung bei Excel immer in Vordergrund
' Dim mldg
' mldg = MsgBox("Endzeit erreicht", 1048576, "Endzeit")
' 1048576 entspricht vbMsgBoxRtlReading
End If
End With
End Sub

Sub MacrosON()
'Dieses Macro ausführen wenn der Code zwischen
'Application.EnableEvents = False und
'Application.EnableEvents = True
'angehalten wurde oder abstürzt
Application.EnableEvents = True
End Sub

Gruß: Konni
Bild

Betrifft: AW: Countdown
von: Konni

Geschrieben am: 18.02.2005 19:09:13
Hier der kompltte Code:
Option Explicit
Public ET As Variant
Public DaZeit As Date
Private Declare
Function sndPlaySound32 Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
Sub Zeitmakro()
With ThisWorkbook.Worksheets("Maßnahmen 2005").Range("A10")
.Value = .Value - CDate("00:00:01")
If .Value <> 0 Then
ET = Now + TimeValue("00:00:01")
If Second(.Value) = 30 Then
Call sndPlaySound32("C:\Winnt\media\klingel.wav", 1)
End If
If Second(.Value) <= 5 Then
Call sndPlaySound32("C:\Winnt\media\ding.wav", 1)
End If
Application.OnTime ET, "Zeitmakro"
Else
ThisWorkbook.Close True 'speichern
' Meldung bei Excel immer in Vordergrund
' Dim mldg
' mldg = MsgBox("Endzeit erreicht", 1048576, "Endzeit")
' 1048576 entspricht vbMsgBoxRtlReading
End If
End With
End Sub

Sub MacrosON()
'Dieses Macro ausführen wenn der Code zwischen
'Application.EnableEvents = False und
'Application.EnableEvents = True
'angehalten wurde oder abstürzt
Application.EnableEvents = True
End Sub

Gruß: Konni
Bild

Betrifft: AW: Countdown
von: Konni

Geschrieben am: 18.02.2005 19:09:25
Hier der kompltte Code:
Option Explicit
Public ET As Variant
Public DaZeit As Date
Private Declare
Function sndPlaySound32 Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
Sub Zeitmakro()
With ThisWorkbook.Worksheets("Maßnahmen 2005").Range("A10")
.Value = .Value - CDate("00:00:01")
If .Value <> 0 Then
ET = Now + TimeValue("00:00:01")
If Second(.Value) = 30 Then
Call sndPlaySound32("C:\Winnt\media\klingel.wav", 1)
End If
If Second(.Value) <= 5 Then
Call sndPlaySound32("C:\Winnt\media\ding.wav", 1)
End If
Application.OnTime ET, "Zeitmakro"
Else
ThisWorkbook.Close True 'speichern
' Meldung bei Excel immer in Vordergrund
' Dim mldg
' mldg = MsgBox("Endzeit erreicht", 1048576, "Endzeit")
' 1048576 entspricht vbMsgBoxRtlReading
End If
End With
End Sub

Sub MacrosON()
'Dieses Macro ausführen wenn der Code zwischen
'Application.EnableEvents = False und
'Application.EnableEvents = True
'angehalten wurde oder abstürzt
Application.EnableEvents = True
End Sub

Gruß: Konni
Bild

Betrifft: AW: Countdown
von: Ramses

Geschrieben am: 18.02.2005 20:20:39
Hallo
wenn du nur Sekunden prüfst, ist das klar :-)
Sub Zeitmakro()
With ThisWorkbook.Worksheets("Tabelle1").Range("A1")
.Value = .Value - CDate("00:00:01")
If .Value <> 0 Then
ET = Now + TimeValue("00:00:01")
If Minute(.Value) < 0 Then
If Second(.Value) = 30 Then
Call sndPlaySound32("C:\Winnt\media\klingel.wav", 1)
End If
If Second(.Value) <= 5 Then
Call sndPlaySound32("C:\Winnt\media\ding.wav", 1)
End If
End If
Application.OnTime ET, "Zeitmakro"
Else
ThisWorkbook.Close True 'speichern
' Meldung bei Excel immer in Vordergrund
' Dim mldg
' mldg = MsgBox("Endzeit erreicht", 1048576, "Endzeit")
' 1048576 entspricht vbMsgBoxRtlReading
End If
End With
End Sub

Gruss Rainer
Bild

Betrifft: Sorry,... kleine Korrektur :-)
von: Ramses
Geschrieben am: 18.02.2005 20:22:44
Hallo
es muss heissen
If Minute(.Value) = 0 Then
Gruss Rainer
Bild

Betrifft: AW: Sorry,... kleine Korrektur :-)
von: Konni
Geschrieben am: 21.02.2005 06:56:02
Hallo Rainer,
vielen Dank für Deine Hilfe, klappt prima. - Konnte mich leider nicht früher bedanken, da ich ausser Haus war.
:-) Konni
 Bild
Excel-Beispiele zum Thema "Countdown"
Countdown in Statusleiste