Avatar billede dantyr Juniormester
30. oktober 2016 - 16:05 Der er 17 kommentarer og
1 løsning

Countdown skal start igen

Hejsa. Jeg har en takttid jeg skriver i celle B2. Et ud begynder at tælle ned(værdi i celle B2) når jeg trykker på en Start knap. Når den når til nul vil jeg gerne ha den til at starte igen uden jeg gør noget...

Sub starttimer()
Application.OnTime Now + TimeValue("00:00:01"), "nexttick"

End Sub
Sub nexttick()
If Worksheets(1).Range("B1") = 0 Then Exit Sub
Worksheets(1).Range("B1").Value = Range("b1").Value - TimeValue("00:00:01")

starttimer
End Sub
Sub stoptimer()
On Error Resume Next
Application.OnTime Now + TimeValue("00:00:01"), "nexttick", , False
End Sub

Sub resettimer()
Worksheets(1).Range("B2").Value = TimeValue("00:15:00")
End Sub_
Avatar billede Jan Hansen Ekspert
30. oktober 2016 - 23:00 #1
Mon ikke:
If Worksheets(1).Range("B1") = 0 Then Exit Sub
skal ændres til:
If Worksheets(1).Range("B1") = 0 Then resttimer
?
Men de vil give en evig løkke hvis du ikke har en stopper på (Knap elle tæller)
Avatar billede dantyr Juniormester
30. oktober 2016 - 23:23 #2
Tak for det Jan.
Men min resttimer virker ikke.
Jeg har en tæller og en stop knap.
Avatar billede Jan Hansen Ekspert
30. oktober 2016 - 23:53 #3
Ska det ikke være "b1":

Worksheets(1).Range("B2").Value = TimeValue("00:15:00")
Avatar billede dantyr Juniormester
31. oktober 2016 - 00:06 #4
Jo det skal, men den melder stadig fejl.
http://i66.tinypic.com/2emmydg.png
Avatar billede Jan Hansen Ekspert
31. oktober 2016 - 06:45 #5
End Sub_

mon det ikke er den sidste "_" der driller

virker fint hos mig
Avatar billede Jan Hansen Ekspert
31. oktober 2016 - 07:06 #6
Den efterfølgende kode fungerer hos mig:

Option Explicit

Sub StartTimer()
Application.OnTime Now + TimeValue("00:00:01"), "NextTick"
End Sub
Private Sub NextTick()
If Worksheets(1).Range("B1") = 0 Then ResetTimer
Worksheets(1).Range("B1").Value = Range("b1").Value - TimeValue("00:00:01")

StartTimer
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime Now + TimeValue("00:00:01"), "NextTick", , False
End Sub

Private Sub ResetTimer()
Worksheets(1).Range("B1").Value = TimeValue("00:15:00")
End Sub
Avatar billede dantyr Juniormester
31. oktober 2016 - 07:39 #7
FEDT. Tak Jan den virker:). Mange tak for hjælpen....
Men har liget set der er et andet problem med den timer jeg bruger. Hvis jeg ikke lader den stå og tælle ned uden at rører noget vil den på 1 min ca kun være ned med 30 sek.
Det vil sige at tælleren kun virker når jeg arbejder på min pc(mac).
Jeg har fundet en anden tæller men den mangler en stopknap samt start igen.
Kan du se hvad der er forkert i den første
Endnu en gang tak .

Dim CountDown As Date, StartTime As Date, CountTiming As Date
Sub Timer()
    If StartTime = 0 Then StartTime = Now
    If CountTiming = 0 Then CountTiming = [A1].Value
    CountDown = Now + TimeValue("00:00:01")
    Application.OnTime CountDown, "Reset"
End Sub
Sub Reset()
    On Error Resume Next
    [A1] = CountTiming - (Now - StartTime) ' This counts down from the start time
    If CountTiming - (Now - StartTime) <= 0 Then
        [A1] = CountTiming ' This is resetting the clock (May not be necessary)
        MsgBox "Countdown complete."
        CountTiming = 0
        StartTime = 0
        Exit Sub
    End If
    Call Timer
End Sub
Sub DisableTimer()
    On Error Resume Next
    Application.OnTime EarliestTime:=CountDown, Procedure:="Reset", Schedule:=False
    [A1] = CountTiming
    CountTiming = 0
    StartTime = 0
End Sub
Avatar billede dantyr Juniormester
31. oktober 2016 - 07:41 #8
Der skulle stå " hvis jeg lader den stå" -ikke
Avatar billede Jan Hansen Ekspert
31. oktober 2016 - 08:01 #9
mon du ikke kan få noget ud af: http://www.cpearson.com/excel/OnTime.aspx
tænker du skal bruge windows timer

?
Du har nedtæller i b1 ik?
ny tid i b2?

Knapper: Start, Pause,Stop ?
Avatar billede dantyr Juniormester
31. oktober 2016 - 08:12 #10
Windows timer kan jeg ikke bruge da jeg arbejder fra en mac.
Ja jeg har nedtæller i b1 og ny tid i b2 og de 3 knapper
Avatar billede Jan Hansen Ekspert
31. oktober 2016 - 08:54 #11
set følgende kode i arket

Private Sub Worksheet_Activate()
    SetVar
End Sub

og modul:

Option Explicit

Dim CountDown As Date, StartTime As Date, CountTiming As Date
Dim Ark As Worksheet
Dim StartTid As Range, Nedtæl As Range
Sub SetVar()
    Set Ark = Sheets(1)
    Set StartTid = Ark.Range("B2")
    Set Nedtæl = Ark.Range("B1")
End Sub
Sub Timer()
    If StartTime = 0 Then StartTime = Now
    If CountTiming = 0 Then CountTiming = StartTid.Value
    CountDown = Now + TimeValue("00:00:01")
    Application.OnTime CountDown, "Reset"
End Sub
Private Sub Reset()
    On Error Resume Next
    Nedtæl.Value = CountTiming - (Now - StartTime) ' This counts down from the start time
    If CountTiming - (Now - StartTime) <= 0 Then
        StartTid.Value = CountTiming ' This is resetting the clock (May not be necessary)
        CountTiming = 0
        StartTime = 0
        Exit Sub
    End If
    Call Timer
End Sub
Sub DisableTimer()
    On Error Resume Next
    Application.OnTime EarliestTime:=CountDown, procedure:="Reset", Schedule:=False
    Nedtæl.Value = 0
    CountTiming = 0
    StartTime = 0
End Sub
Sub Pause()
    On Error Resume Next
    Application.OnTime EarliestTime:=CountDown, procedure:="Reset", Schedule:=False
    CountTiming = Nedtæl.Value
    StartTime = 0

End Sub
Avatar billede dantyr Juniormester
31. oktober 2016 - 09:39 #12
Det ser ud til den næsten er der mangler bare at den selv starter når den når nul. Ellers ser det godt du :)
Avatar billede Jan Hansen Ekspert
31. oktober 2016 - 09:54 #13
mon ikke der skal sættes " Call Timer" ind se ned:
        CountTiming = 0
        StartTime = 0
Call Timer
        Exit Sub
Avatar billede dantyr Juniormester
31. oktober 2016 - 15:59 #14
Nu har jeg kæmpet med det og kan ikke helt forstå hvordan det hænger sammen.
Hvergang jeg lukker den ned og starter excel op igen skal jeg først trykke på "set var" ellers melder den fejl. Tallet i felt B2 skulle kun kunne ændres hvis jeg skrev et nyt tal men den kan også ændre sig når B1 når 00:00:00.... Kunne ikke fatter hvor jeg gjorde af Call Timer
http://s000.tinyupload.com/index.php?file_id=04553332009863528615
Avatar billede Jan Hansen Ekspert
31. oktober 2016 - 16:45 #15
Prøver igen

'---- Skal ligge i ThisWorkbook ---'
Private Sub Workbook_Open()
    SetVar
End Sub


'------ Skal ligge i et modul ----'
Option Explicit

Dim CountDown As Date, StartTime As Date, CountTiming As Date
Dim Ark As Worksheet
Dim StartTid As Range, Nedtael As Range
Sub SetVar()
    '-----Sætter variable for Arket, B1 og B---'
    Set Ark = Sheets(1)
    Set StartTid = Ark.Range("B2")
    Set Nedtael = Ark.Range("B1")
End Sub
Sub Timer()
    If StartTime = 0 Then StartTime = Now
    If CountTiming = 0 Then CountTiming = StartTid.Value
    CountDown = Now + TimeValue("00:00:01")
    Application.OnTime CountDown, "Reset"
End Sub
Private Sub Reset()
    On Error Resume Next
    Nedtael.Value = CountTiming - (Now - StartTime) ' Tæller ned fra "StartTime"
    If CountTiming - (Now - StartTime) <= 0 Then ' Tjekker om tiden er nået til nul
        CountTiming = 0
        StartTime = 0
        Call Timer '----- Kører sub´en Timer -----'
        Exit Sub
    End If
    Call Timer '----- Kører sub´en Timer -----'
End Sub
Sub DisableTimer()
    On Error Resume Next
    Application.OnTime EarliestTime:=CountDown, procedure:="Reset", Schedule:=False
    Nedtael.Value = 0
    CountTiming = 0
    StartTime = 0
End Sub
Sub Pause()
    On Error Resume Next
    Application.OnTime EarliestTime:=CountDown, procedure:="Reset", Schedule:=False
    CountTiming = Nedtael.Value
    StartTime = 0

End Sub

Start knap skal køre "Timer"
Pause knap skal køre "Pause"
og Stop knap skal køre "DisableTimer"
Avatar billede dantyr Juniormester
31. oktober 2016 - 17:41 #16
Kanon :) nu spiller det bare perfekt. Du får så mange tak for hjælpen det havde jeg aldrig klaret selv..... Fedt og mange tak
Avatar billede Jan Hansen Ekspert
31. oktober 2016 - 17:45 #17
Velbekomme vba bliver bedre til ved at google og bruge det ;-)
Avatar billede dantyr Juniormester
31. oktober 2016 - 17:48 #18
Ja men jeg tror jeg skal prøve at sætte mig ind i hvordan det er bygget op for at lærer det fra bunden. Det er alt for meget famlem i blinde når man ikke forstår det grundlæggende... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester