Registriert seit: 27.07.2016
Version(en): 2013
Hallo ich möchte eine excel tabelle erstellen mit 5 timern (countdowns) 33,17,12,2,1 min, wobei der nächste timer erst dann anfangen soll wenn der vorherige bei 0 ist bisher habe ich mich durch tourials durchgequält und folgenden code gebastelt: Sub StartTimer() Application.OnTime Now + TimeValue("00:00:01"), "aa" End Sub Sub aa() If Range("c5").Value = 0 Then Exit Sub Range("c5").Value = Range("c5").Value - TimeValue("00:00:01") StartTimer End Sub Sub StartTimertwo() Application.OnTime Now + TimeValue("00:00:01"), "ab" End Sub Sub ab() If Range("c7").Value = 0 Then Exit Sub Range("c7").Value = Range("c7").Value - TimeValue("00:00:01") StartTimertwo End Sub Sub StopTimer() Application.OnTime Now + TimeValue("00:00:01"), "aa", Schedule:=False End Sub bei der zeile If Range("c5").Value = 0 Then Exit Sub beende ich die funktion die "runterzählt". nun möchte ich zusätzlich, dass wenn 0 erreicht wird das nächste feld (in meinem fall c7) auf 17:00 gestellt wird und sub ab() ausgeführt wird. hoffe habe mich verständlich genug ausgedrückt vielen dank im voraus für jegliche Hilfe Rjinxil
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
26.09.2016, 03:33
(Dieser Beitrag wurde zuletzt bearbeitet: 26.09.2016, 03:33 von Kuwer.
Bearbeitungsgrund: Smilies ausgeschaltet
)
Hallo Rjinxil, ich würde es so machen:
' ************************************************************** ' Modul: mTimer Typ = Allgemeines Modul ' **************************************************************
Option Explicit
Dim iTimerSet As Double
Sub StartTimer() If iTimerSet = 0 Then '33,17,12,2,1 min Range("C5").NumberFormat = "[mm]:ss" Range("C5").Value = TimeValue("00:33:00") Range("C7").NumberFormat = "[mm]:ss" Range("C7").Value = TimeValue("00:17:00") Range("C9").NumberFormat = "[mm]:ss" Range("C9").Value = TimeValue("00:12:00") Range("C11").NumberFormat = "[mm]:ss" Range("C11").Value = TimeValue("00:02:00") Range("C13").NumberFormat = "[mm]:ss" Range("C13").Value = TimeValue("00:01:00") Else If Range("C5").Value > 0 Then Range("C5").Value = Range("C5").Value - TimeValue("00:00:01") ElseIf Range("C7").Value > 0 Then Range("C7").Value = Range("C7").Value - TimeValue("00:00:01") ElseIf Range("C9").Value > 0 Then Range("C9").Value = Range("C9").Value - TimeValue("00:00:01") ElseIf Range("C11").Value > 0 Then Range("C11").Value = Range("C11").Value - TimeValue("00:00:01") ElseIf Range("C13").Value > 0 Then Range("C13").Value = Range("C13").Value - TimeValue("00:00:01") End If End If If Range("C13").Value > 0 Then iTimerSet = Now + TimeValue("00:00:01") Application.OnTime iTimerSet, "StartTimer", , True Else On Error Resume Next Application.OnTime iTimerSet, "StartTimer", , False On Error GoTo 0 iTimerSet = 0 End If End Sub
Sub PauseTimer() On Error Resume Next Application.OnTime iTimerSet, "StartTimer", , False On Error GoTo 0 End Sub
Sub StopTimer() On Error Resume Next Application.OnTime iTimerSet, "StartTimer", , False On Error GoTo 0 iTimerSet = 0 End Sub
Code eingefügt mit: Excel Code JeanieLies Dir dazu unbedingt auch das hier durch: Applicaton.OnTime - Zeitgesteuerte MakrosGruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Rjinxil
Registriert seit: 27.07.2016
Version(en): 2013
26.09.2016, 09:05
(Dieser Beitrag wurde zuletzt bearbeitet: 26.09.2016, 09:05 von Rjinxil.)
Hey
vielen dank genau so habe ich es mir vorgestellt. (leider war mein Ansatz wohl nicht wirklich nützlich :22:)
eine Kleinigkeit fehlt jedoch. sobald der letzte Timer durch ist soll er von vorne anfangen (wieder alles reseten und den 33ger Timer laufen).
erster Ansatz war unter der zeile "Range("C13").Value = Range("C13").Value - TimeValue("00:00:01")" ein "Else: StartTimer" einzufügen aber es geht nicht
und eine frage habe ich noch: ich brauche das ganze 5 mal in einer Tabelle. kann ich es bedenkenlos Copytesten und nur die Variablen ändern?
Gruss
*edit: das mit dem variablen ändern und copy pasten hat geklappt, jetzt nur noch der reset
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
26.09.2016, 10:03
(Dieser Beitrag wurde zuletzt bearbeitet: 26.09.2016, 10:03 von Kuwer.
Bearbeitungsgrund: Smilies ausgeschaltet
)
Hallo Rjinxil, mit Reset (= Endlosschleife) dann so: Option Explicit
Dim iTimerSet As Double
Sub StartTimer() If iTimerSet = 0 Then '33,17,12,2,1 min Range("C5").NumberFormat = "[mm]:ss" Range("C5").Value = TimeValue("00:00:03") Range("C7").NumberFormat = "[mm]:ss" Range("C7").Value = TimeValue("00:00:02") Range("C9").NumberFormat = "[mm]:ss" Range("C9").Value = TimeValue("00:00:03") Range("C11").NumberFormat = "[mm]:ss" Range("C11").Value = TimeValue("00:00:02") Range("C13").NumberFormat = "[mm]:ss" Range("C13").Value = TimeValue("00:00:03") Else If Range("C5").Value > 0 Then Range("C5").Value = Range("C5").Value - TimeValue("00:00:01") ElseIf Range("C7").Value > 0 Then Range("C7").Value = Range("C7").Value - TimeValue("00:00:01") ElseIf Range("C9").Value > 0 Then Range("C9").Value = Range("C9").Value - TimeValue("00:00:01") ElseIf Range("C11").Value > 0 Then Range("C11").Value = Range("C11").Value - TimeValue("00:00:01") ElseIf Range("C13").Value > 0 Then Range("C13").Value = Range("C13").Value - TimeValue("00:00:01") End If End If If Range("C13").Value > 0 Then iTimerSet = Now + TimeValue("00:00:01") Application.OnTime iTimerSet, "StartTimer", , True Else iTimerSet = 0 Application.OnTime Now, "StartTimer", , True End If End Sub
Sub PauseTimer() On Error Resume Next Application.OnTime iTimerSet, "StartTimer", , False On Error GoTo 0 End Sub
Sub StopTimer() On Error Resume Next Application.OnTime iTimerSet, "StartTimer", , False On Error GoTo 0 iTimerSet = 0 End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Rjinxil
Registriert seit: 27.07.2016
Version(en): 2013
Hey. vielen Dank läuft jetzt genau wie es soll.
ich möchte nun ein weiteres Feld einbauen, welches abhängig von der Restzeit des 33 min timers einen text anzeigt:
wenn timer 30:00-33:00 text1 wenn timer 25:30-30:00 text2 etc
ist sowas ohne grosse Umstände möglich?
Gruss
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo, Option Explicit
Dim iTimerSet As Double
Sub StartTimer() 'wenn timer 30:00-33:00 text1 'wenn timer 25:30-30:00 text2 'etc If iTimerSet = 0 Then '33,17,12,2,1 min Range("C5").NumberFormat = "[mm]:ss" Range("C5").Value = TimeValue("00:33:00") Range("B5").Value = "Text 1" Range("C7").NumberFormat = "[mm]:ss" Range("C7").Value = TimeValue("00:17:00") Range("C9").NumberFormat = "[mm]:ss" Range("C9").Value = TimeValue("00:12:00") Range("C11").NumberFormat = "[mm]:ss" Range("C11").Value = TimeValue("00:02:00") Range("C13").NumberFormat = "[mm]:ss" Range("C13").Value = TimeValue("00:01:00") Else If Range("C5").Value > 0 Then Range("C5").Value = Range("C5").Value - TimeValue("00:00:01") If Range("C5").Value > TimeValue("00:30:00") Then 'Range("B5").Value = "Text 1" ElseIf Range("C5").Value > TimeValue("00:25:30") Then Range("B5").Value = "Text 2" ElseIf Range("C5").Value > TimeValue("00:20:00") Then Range("B5").Value = "Text 3" ElseIf Range("C5").Value > TimeValue("00:00:00") Then Range("B5").Value = "Text 4" End If ElseIf Range("C7").Value > 0 Then Range("C7").Value = Range("C7").Value - TimeValue("00:00:01") ElseIf Range("C9").Value > 0 Then Range("C9").Value = Range("C9").Value - TimeValue("00:00:01") ElseIf Range("C11").Value > 0 Then Range("C11").Value = Range("C11").Value - TimeValue("00:00:01") ElseIf Range("C13").Value > 0 Then Range("C13").Value = Range("C13").Value - TimeValue("00:00:01") End If End If If Range("C13").Value > 0 Then iTimerSet = Now + TimeValue("00:00:01") Application.OnTime iTimerSet, "StartTimer", , True Else iTimerSet = 0 Application.OnTime Now, "StartTimer", , True End If End Sub
Sub PauseTimer() On Error Resume Next Application.OnTime iTimerSet, "StartTimer", , False On Error GoTo 0 End Sub
Sub StopTimer() On Error Resume Next Application.OnTime iTimerSet, "StartTimer", , False On Error GoTo 0 iTimerSet = 0 End Sub
Gruß Uwe
Registriert seit: 27.07.2016
Version(en): 2013
Hey läuft alles wie ich es wollte jetzt. eine kleine Sache nervt allerdings extrem. wenn ich ein anderes excel Dokument öffne werden die funktionen dort ausgeführt. wie kann ich es auf dieses Dokument einschränken Gruss
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, vielleicht so? Code: Sub StartTimer() 'wenn timer 30:00-33:00 text1 'wenn timer 25:30-30:00 text2 'etc With ThisWorkbook.Worksheets(1) 'bitte anpassen! If iTimerSet = 0 Then '33,17,12,2,1 min .Range("C5").NumberFormat = "[mm]:ss" .Range("C5").Value = TimeValue("00:33:00") .Range("B5").Value = "Text 1" .Range("C7").NumberFormat = "[mm]:ss" .Range("C7").Value = TimeValue("00:17:00") .Range("C9").NumberFormat = "[mm]:ss" .Range("C9").Value = TimeValue("00:12:00") .Range("C11").NumberFormat = "[mm]:ss" .Range("C11").Value = TimeValue("00:02:00") .Range("C13").NumberFormat = "[mm]:ss" .Range("C13").Value = TimeValue("00:01:00") Else If .Range("C5").Value > 0 Then .Range("C5").Value = .Range("C5").Value - TimeValue("00:00:01") If .Range("C5").Value > TimeValue("00:30:00") Then 'Range("B5").Value = "Text 1" ElseIf .Range("C5").Value > TimeValue("00:25:30") Then .Range("B5").Value = "Text 2" ElseIf .Range("C5").Value > TimeValue("00:20:00") Then .Range("B5").Value = "Text 3" ElseIf .Range("C5").Value > TimeValue("00:00:00") Then .Range("B5").Value = "Text 4" End If ElseIf .Range("C7").Value > 0 Then .Range("C7").Value = .Range("C7").Value - TimeValue("00:00:01") ElseIf .Range("C9").Value > 0 Then .Range("C9").Value = .Range("C9").Value - TimeValue("00:00:01") ElseIf .Range("C11").Value > 0 Then .Range("C11").Value = .Range("C11").Value - TimeValue("00:00:01") ElseIf .Range("C13").Value > 0 Then .Range("C13").Value = .Range("C13").Value - TimeValue("00:00:01") End If End If If .Range("C13").Value > 0 Then iTimerSet = Now + TimeValue("00:00:01") Application.OnTime iTimerSet, "StartTimer", , True Else iTimerSet = 0 Application.OnTime Now, "StartTimer", , True End If End With End Sub
Gruß Stefan Win 10 / Office 2016
|