20. september 2018 - 03:29Der er
27 kommentarer og 2 løsninger
Excel timer laver ballade
Hej,
Jeg har en timer der tæller op på mit ark, alt virker med start/stop/reset men når pc klokken skifter fra 23:59:59 til 00:00:00 skifter timeren til 23:59:59 og begynder at tælle ned af.......
Er der nogle der har en idé om hvorfor den gør dette, og hvordan det kan fixes (hvis muligt)?
her er vba delen:
Option Explicit
Dim NextTick As Date, t As Date, PreviousTimerValue As Date
Sub StartTime() PreviousTimerValue = Calculations.Range("A1").Value t = Time Call ExcelStopWatch End Sub ---------------------------------------------------------------------------------------------------------------------------------------- Private Sub ExcelStopWatch() Calculations.Range("A1").Value = Format(Time - t + PreviousTimerValue, "hh:mm:ss") NextTick = Now + TimeValue("00:00:01")
Application.OnTime NextTick, "ExcelStopWatch" End Sub ----------------------------------------------------------------------------------------------------------------------------------------- Sub StopClock() On Error Resume Next Application.OnTime earliesttime:=NextTick, procedure:="ExcelStopWatch", schedule:=False End Sub ---------------------------------------------------------------------------------------------------------------------------------------- Sub Reset() On Error Resume Next
With StopWatch.Shapes("TimeBox") .Fill.ForeColor.RGB = RGB(255, 255, 255) End With
Application.OnTime earliesttime:=NextTick, procedure:="ExcelStopWatch", schedule:=False Calculations.Range("A1").Value = 0 End Sub
Dim NextTick As Date, t As Date, PreviousTimerValue As Date Sub StartTime() PreviousTimerValue = Range("A1").Value t = Time Call ExcelStopWatch End Sub
Private Sub ExcelStopWatch() Range("A1").Value = Format(Time - t + PreviousTimerValue, "hh:mm:ss") NextTick = Now + TimeValue("00:00:01")
Application.OnTime NextTick, "ExcelStopWatch" End Sub
Hej Jan, Dit forslag virker også (uden den ændring "0til1" som jeg måtte lave på den anden) Kan du forklare hvad linjen gør, eller hvorfor det virkede med et 1 tal?
Lyder spændende med "lidt tilretning" for løsning af nedtælling :)
Det var faktisk i forbindelse med dette stopur at jeg gerne ville have visning/nedtælling til vores pause hver 60 min. men svaret i den anden tråd var at mit ark vil "lægge sig ned" så "opgav" en løsning.....
Henrik ps. Hvis op/ned timer kan samles i en, er det nok smart at bruge din løsning :)
Dim NextTick As Date, PreviousTimerValue As Date Dim NextTick2 As Date, PreviousTimerValue2 As Date Dim ws As Worksheet, rCell As Range, rCell2 As Range
Sub StartTime() Set ws = Sheets("Calculations") Set rCell = ws.Range("A1") PreviousTimerValue = rCell.Value Call ExcelStopWatch End Sub
Private Sub ExcelStopWatch() rCell.Value = rCell.Value + TimeValue("00:00:01") NextTick = Now + TimeValue("00:00:01")
Application.OnTime NextTick, "ExcelStopWatch" End Sub
Sub StopClock() On Error Resume Next Application.OnTime earliesttime:=NextTick, procedure:="ExcelStopWatch", schedule:=False End Sub
Sub Reset() On Error Resume Next
Application.OnTime earliesttime:=NextTick, procedure:="ExcelStopWatch", schedule:=False rCell.Value = 0 End Sub '------Nedtælling---------- Sub StartTimedown() Set ws = Sheets("Calculations") Set rCell2 = ws.Range("A2") '-----------Cellen den skal tælle ned i If rCell2 = "" Then rCell2 = TimeValue("01:00:00") PreviousTimerValue2 = rCell2.Value Call ExcelStopWatchDown End Sub
Private Sub ExcelStopWatchDown() With rCell2 .Value = .Value - TimeValue("00:00:01") If .Value < TimeValue("00:01:00") Then ' maler baggrunden rød det sidste minut .Interior.ColorIndex = 3 Else .Interior.ColorIndex = 0 End If End With NextTick = Now + TimeValue("00:00:01") Application.OnTime NextTick, "ExcelStopWatchDown" End Sub
Sub StopClockDown() On Error Resume Next Application.OnTime earliesttime:=NextTick, procedure:="ExcelStopWatchDown", schedule:=False End Sub
Sub ResetDown() On Error Resume Next
Application.OnTime earliesttime:=NextTick, procedure:="ExcelStopWatchDown", schedule:=False rCell2.Value = TimeValue("01:00:00") End Sub
evt kunne du køer macro'erne hver 5 eller 10 sekund, så arket ikke lammes så meget.
evt. denne så begge ure kører på samme knapper med auto ny nedtællingstime
Option Explicit
Dim NextTick As Date, PreviousTimerValue As Date Dim NextTick2 As Date, PreviousTimerValue2 As Date Dim ws As Worksheet, rCell As Range, rCell2 As Range
Sub StartTime() Set ws = Sheets("Calculations") Set rCell = ws.Range("A1") PreviousTimerValue = rCell.Value
Set rCell2 = ws.Range("A2") '-----------Cellen den skal tælle ned i If rCell2 = "" Then rCell2 = TimeValue("01:00:00") PreviousTimerValue2 = rCell2.Value
Call ExcelStopWatch End Sub
Private Sub ExcelStopWatch() rCell.Value = rCell.Value + TimeValue("00:00:01")
With rCell2 .Value = .Value - TimeValue("00:00:01") If .Value < TimeValue("00:01:00") Then ' maler baggrunden rød det sidste minut .Interior.ColorIndex = 3 Else .Interior.ColorIndex = 0 End If If .Value = TimeValue("00:00:00") Then .Value = TimeValue("01:00:00") ' når timen er udløbet starter den automatisk på en time igen End With
NextTick = Now + TimeValue("00:00:01") Application.OnTime NextTick, "ExcelStopWatch" End Sub
Sub StopClock() On Error Resume Next Application.OnTime earliesttime:=NextTick, procedure:="ExcelStopWatch", schedule:=False End Sub
Sub Reset() On Error Resume Next
Application.OnTime earliesttime:=NextTick, procedure:="ExcelStopWatch", schedule:=False rCell.Value = TimeValue("00:00:00") rCell2.Value = TimeValue("01:00:00") End Sub
Hvis du skal det med forskel på pauseuret og det andet ur, skal du nok ud i en combi af de to sidste forslag. Håber du kan læse og forstå koden, så er det nemmere at tilpasse den!!
Option Explicit ' kodenskal ligge i "Denne_projektmappe" '----------------------------------------' Dim wsA As Worksheet, wsB As Worksheet, rCellA As Range, rCellB As Range Set wsA = Sheets("Hovedarket") Set wsB = Sheets("Calculations")
Private Sub Workbook_SheetActivate(ByVal Sh As Object) ' kører hvergang et ark bliver aktiveret, variablen sh fanger hvilket ark der er det aktive Set rCellA = wsA.Range("A1") ' A1 i hovedarket Set rCellB = wsB.Range("A1") ' A1 i biarket rCellA.Font = rCellB.Font ' tager font indstillinger med over fra biark til hovedark End Sub
Den kan jeg ikke lige få til at virke. Har skrevet dette i ThisWorkbook: (Skulle lave en sub da den gik i stå der)
Option Explicit
Dim wsA As Worksheet, wsB As Worksheet, rCellA As Range, rCellB As Range __________________________________________________________________ Private Sub Font()
Set wsA = Sheets("Hovedarket") Set wsB = Sheets("Calculations")
End Sub ___________________________________________________________________
Private Sub Workbook_SheetActive(ByVal Sh As Object)
Set rCellA = wsA.Range("B1") Set rCellB = wsB.Range("B1") ´-------Nedtælleren er i Calculations B1 rCellA.Font = rCellB.Font
End Sub
For testens skyld har jeg i B1 skrevet denne i hovedarket =Calculations!B1 Der sker ikke lige noget når B1 i Calculations skifter font.
(I mit hovedark bruger jeg en figur hvor i jeg har uret og kaldt den TimerDown, der skulle den gerne ende når den virker)
Dim wsA As Worksheet, wsB As Worksheet, rCellA As Range, rCellB As Range
Private Sub Workbook_SheetActivate(ByVal Sh As Object) Set wsA = Sheets("Hovedarket") Set wsB = Sheets("Calculations")
Set rCellA = wsA.Range("B1") Set rCellB = wsB.Range("B1") '-------Nedtælleren er i Calculations B1 With rCellA.Font .Name = rCellB.Font.Name .Bold = rCellB.Font.Bold .Size = rCellB.Font.Size .Color = rCellB.Font.Color 'osv End With End Sub
Denne virker, men jeg skal skifte til ark Calculations og tilbage til Hovedarket, for at det skifter...
Option Explicit
Dim wsA As Worksheet, wsB As Worksheet, rCellA As Range, rCellB As Range
Private Sub Workbook_SheetActivate(ByVal Sh As Object) Set wsA = Sheets("Hovedarket") Set wsB = Sheets("Calculations")
Set rCellA = wsA.Range("B1") Set rCellB = wsB.Range("B1") '-------Nedtælleren er i Calculations B1 With rCellA.Font .Name = rCellB.Font.Name .Bold = rCellB.Font.Bold .Size = rCellB.Font.Size .Color = rCellB.Font.Color 'osv End With End Sub
ps. er det muligt at overfører dette til en "TimeBox" (figur med ur, (feks kaldt TimeDown) da det er nemmere at flytte rundt på arket?)
tænkte på om denne kunne bruges....(virker ikke som den er i mit ark og det er baggrunden)
Hvis jeg laver en ny række S3:S44 i Arket Cacculations med feks. 00:00:01, 00:59:00, 01:00:00, 01:59:00 02:00:00 osv. (op til 59 m. en farve, mellem 59 m. og 1 time anden farve, 1t til 1t 59m. samme farve som første, 1t 59 m. til 2t samme farve som den anden osv)
en form for tilretning af denne og at timebox er i Hovedarket:
If Calculations.Range("A1").Value > Calculations.Range("S3") And Calculations.Range("A1").Value <= Calculations.Range("S4") Then With StopWatch.Shapes("TimeBox") .Fill.ForeColor.RGB = RGB(x, x, x) End With
If Calculations.Range("A1").Value > Calculations.Range("S4") And Calculations.Range("A1").Value <= Calculations.Range("S5") Then With StopWatch.Shapes("TimeBox") .Fill.ForeColor.RGB = RGB(x, x, x) End With
osv.......
Er det for besværlig/dumt at bruge/lave det på den måde ?
Dim ws As Worksheet Set ws = Sheets("Calculations") Dim iRest As Integer iRest = Format(ws.Range("A1").Value, "hh") ' hiver timetal ud iRest = iRest Mod 2 ' finder resten ved division med 2 Select Case iRest Case 0 With StopWatch.Shapes("TimeBox") .Fill.ForeColor.RGB = RGB(x, x, x) Case 1 With StopWatch.Shapes("TimeBox") .Fill.ForeColor.RGB = RGB(x, x, x) End Select
Laver lige en ny tråd for overblikkets skyld :) (og min ;) )
Synes godt om
Ny brugerNybegynder
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.