Avatar billede Simonjulandreasen Nybegynder
27. januar 2012 - 10:33 Der er 26 kommentarer og
1 løsning

stopur i excel

Hej Eksperter

Jeg er cykeltræner i en cykelkklub, vi afholder enkeltstarts træninger  hvor vi så optager deres tider i et excel are. i den forbindelse ville jeg høre om det var muligt at få excel til at have en start og stop knap for hver rytter. Så man slap for at stå med et stopur og tage mellemtider, så ville dette være noget nemmer at excel selv optig tiderne?

Kan det lade sig gøre og er der eventulet en der kan hjælp med at skrive den vba kode??

Jeg fandt følgende fra tidliger spørgsmål men jeg kan ikk finde ud af at bruge setkeys og det skal jo være en bestemt kolonne hvor stopuren skal være:

Public StartTime As Double

Sub SetKeys()
    Application.OnKey "s", "SetStart"
    Application.OnKey "m", "SetLapTime"
    Application.OnKey "f", "FinishTime"
End Sub

Sub SetStart()
    StartTime = Timer
    Range("a65536").End(xlUp).Offset(1, 0) = 0
End Sub

Sub SetLapTime()
Dim Lap As Double
    Lap = Timer - StartTime
    Range("a65536").End(xlUp).Offset(1, 0) = Lap
End Sub

Sub FinishTime()
    Call SetLapTime
    Application.OnKey "s"
    Application.OnKey "m"
    Application.OnKey "f"
End Sub
Avatar billede Thorp Praktikant
27. januar 2012 - 11:55 #1
Hvis du kører makroen SetKeys, så vil et tryk på tasterne s,m og f give dig starttiden altid =0 , mellemtiden og sluttiden. i tre rækker under hinanden.
Avatar billede Thorp Praktikant
27. januar 2012 - 12:00 #2
Hvis du fjerner Application OnKey kommandoerne i proceduren FinsihTime, så vil du kunne gentage s, m og f kaldende flere gange.
Avatar billede Simonjulandreasen Nybegynder
27. januar 2012 - 12:04 #3
JEg kan fint indsætte VDB koden, hvordan afspiller jeg dem alle ? og hvordan skal excelarket se ud ??
Avatar billede Simonjulandreasen Nybegynder
27. januar 2012 - 12:06 #4
Den skriver at makrone setstart ikke kan køres
Avatar billede Thorp Praktikant
27. januar 2012 - 12:30 #5
Public StartTime As Double

Sub SetKeys()
    Application.OnKey "s", "SetStart"
    Application.OnKey "m", "SetLapTime"
    Application.OnKey "f", "FinishTime"
End Sub
Prøv evt denne variation, som indsætter resultatet i kolonnerne B, C og D

Sub SetStart()
    StartTime = Timer
    ActiveSheet.Range("XFD1").End(xlToLeft).Offset(0, 1) = 0
End Sub

Sub SetLapTime()
Dim Lap As Double
    Lap = Timer - StartTime
    ActiveSheet.Range("XFD1").End(xlToLeft).Offset(0, 1) = Lap
End Sub

Sub FinishTime()
    Call SetLapTime
    ActiveSheet.Range("XFD1").End(xlToLeft).Select
End Sub
Avatar billede Thorp Praktikant
27. januar 2012 - 12:31 #6
Prøv evt denne variation, som indsætter resultatet i kolonnerne B, C og D
Avatar billede Thorp Praktikant
27. januar 2012 - 12:34 #7
Kontroller din makro indstilling:

Filer - Indstillinger - Sikkerhedscenter - Indstillinger for sikkerhedscenter - Indstillinger for makro. vælg "Aktiver alle makroer"
Avatar billede Thorp Praktikant
27. januar 2012 - 13:15 #8
Du kan også prøve denne variant, hvor du f.eks i Kolonne A har rytternes Navne i Kolonne B har du starttiden, i Kolonne C mellemtiden og i Kolonne D har du sluttiden.

Når du aktiver Setkeys så skriver den starttiden, mellemtiden og sluttiden i samme række. Når du så taster "s" igen for at starte en ny tidstagning, så skrives resultaterne i næste række.

Public StartTime As Double
Public i As Integer

Sub SetKeys()
    Application.OnKey "s", "SetStart"
    Application.OnKey "m", "SetLapTime"
    Application.OnKey "f", "FinishTime"
    i = 2
End Sub

Sub SetStart()
    StartTime = Timer
    ActiveSheet.Range("XFD" & i).End(xlToLeft).Offset(0, 1) = 0
End Sub

Sub SetLapTime()
Dim Lap As Double
    Lap = Timer - StartTime
    ActiveSheet.Range("XFD" & i).End(xlToLeft).Offset(0, 1) = Lap
End Sub

Sub FinishTime()
    Call SetLapTime
    ActiveSheet.Range("XFD" & i).End(xlToLeft).Select
    i = i + 1
End Sub
Avatar billede Simonjulandreasen Nybegynder
01. februar 2012 - 11:50 #9
Jeg kan ikke få et til at fungere...min erfaring med vba er simpelthen for lille tror jeg .. må jeg ikke præve at sende dokumentet til dig for så at se om du kan få det til at fungere ?
Avatar billede Thorp Praktikant
04. februar 2012 - 10:40 #10
Hej,

jeg beklager det sene svar, men jeg har haft travlt på arbejdet.

Jeg har uploadet en fil som du kan prøve. Den Loader automatisk "Setkeys" når du åbner regnearket.

Koden er lagt i Modul 1.

Link til stop ur i Excel: http://gupl.dk/673171/
Avatar billede Thorp Praktikant
04. februar 2012 - 11:11 #11
I stedet for i=2 under setkeys kan du evt. bruge denne kode.

i = ActiveSheet.Range("B2").CurrentRegion.Rows.Count + 1

denne vil så sikre at ny tidstagning altid starter i den første tomme række i kolonne B.
Avatar billede Simonjulandreasen Nybegynder
06. februar 2012 - 08:26 #12
Det er stadig ikke hvad jeg søger ... da dette vil forud sætte at alle rytterne kommer ind i kronologist rækkefølge... kan man ikke oprette en knap i excel arket til hver tid der hedder start og stop ?
Avatar billede Thorp Praktikant
06. februar 2012 - 11:18 #13
Hej,

Siden du ikke kan få rytterne til at komme ind i kronologisk rækkefølge har jeg lavet denne nye version :-)

Link til Stopur: http://gupl.dk/673291/
Avatar billede Simonjulandreasen Nybegynder
06. februar 2012 - 11:35 #14
Så skal jeg sku da lige love  for at det spiller :-) En sidste ting ....er der mulighed for at at fjerne den lap time da jeg kun skal bruge sluttiden ?
Avatar billede Thorp Praktikant
06. februar 2012 - 11:51 #15
Hej,

i denne version har jeg fjernet mellemtiden.


Link: http://gupl.dk/673294/
Avatar billede Simonjulandreasen Nybegynder
06. februar 2012 - 11:56 #16
du får point nu - men hvordan faen på jeg så det her over i mit excel ark med samme opsætning med de fine ure og sådan ?
Avatar billede Simonjulandreasen Nybegynder
06. februar 2012 - 12:07 #17
og sidst men ikke mindst så jeg at så skulle opbygning af tiden faktisk vises tt:mm:ss kan de tlade sig gøre ? for ellers kan secel ikke regne gennemsnits fart for mig
Avatar billede Thorp Praktikant
06. februar 2012 - 15:21 #18
Denne version anvender Excels serienumre til tidstagningen i stedet for Timer funktionen.

Når du skal bruge løsningen i et andet ark kopiere du blot koden til et modul i det nye regneark. Husk både at kopiere fra modulet og fra Workbooken.

Når du har kopieret koden ind i det nye regneark kan du kopier et enkelt knap-element(Eller oprette et nyt) i dit ark, og tildele dette knap-element makroen "SetTime". Herefter kopier du blot knap-elementet så mange gange som du har rækker til.

Herefter skal hvert knap-element navngives f.eks. "Billede 1", "Billede 2",. ..."Billede 25", som jeg har gjort i løsningen.

Link: http://gupl.dk/673307/
Avatar billede Simonjulandreasen Nybegynder
09. februar 2012 - 11:43 #19
Tak for den fine forklarende tekst i excekl arket. Men må indrømme jeg ikk helt er med på det beat :)

De knapper du har navngivet billed 1 billed 2 osv. hvor ser jeg det i macroen ?

Og jeg forstår ikke hvordan navngivnigen skal følge dette princip. kan du ikke evt tage nogle screen shots hvor du viser kopiringen step by step.

Jeg prøved blot at kopier det der stod i selve excelarket direkte ind i et nyt ark men såp skriver den at den har problemer med nedenstående... håber fortsat du ville hjælpe
If TimerArray(j, 1) Then
Avatar billede Thorp Praktikant
09. februar 2012 - 12:04 #20
Navngivningen af dine knap-elementer , feks. "Billede 1" er vigtigt fordi makroen bruger knap-elementets navn til at bestemme, hvor værdierne skal indsættes. Ved tryk på knap-element "Billede 1" indsættes værdierne i første række, ved tryk på knap-element "Billede 2" indsættes værdierne i anden række osv. Du kan dog frit navngive knapelementerne f.eks. "Stopur 1", Stopur 2" eller noget andet - så længe navngivningen ender på en blank karakter efterfulgt af et tal. Hvis du f.eks. navngiver et knap-element "Simon 45" - så indsættes værdierne i den 45'te række under kolonneoverskriften.

Det er Application.caller der fanger dette.
Avatar billede Simonjulandreasen Nybegynder
09. februar 2012 - 12:27 #21
Du taler hen over hovedet på mig.. desværre
Avatar billede Simonjulandreasen Nybegynder
09. februar 2012 - 13:26 #22
NU fik jeg det næsten til at fungere, ved at ændre
Public TimerArray(25, 3) As Variant
til
Public TimerArray(100, 3) As Variant

så kan  jeg kopier det det har lavet længere ned af på regnearket så tabellen med tider bliver længer.

problemt er så at nogle af tiderne forskubber sig lidt op.

så nå jeg fx trykker på uret så starten det timeren i rækken lige over ?
Avatar billede Simonjulandreasen Nybegynder
09. februar 2012 - 13:33 #23
Hvis tablen nu blev gjort længere så den fortsatte fx fra række 1-1000 ville dette være super ... ?
Avatar billede Thorp Praktikant
21. februar 2012 - 11:25 #24
Hej,

jeg har uploadet en vejledning - der trinvist viser, hvordan løsningen kopieres til et nyt regneark.

Link: http://gupl.dk/674346/
Avatar billede Simonjulandreasen Nybegynder
21. februar 2012 - 11:58 #25
takker mange gange, nu skal du ikke høre mere fra mig :)
Avatar billede zicy Nybegynder
09. januar 2013 - 08:38 #26
Hey kan man få så man starter 5 stopure med et tryk og kan stoppe dem en af gangen med 1 - 2 - 3 - 4 - 5 på numpad ?
Avatar billede zicy Nybegynder
09. januar 2013 - 14:26 #27
Ahh fandt ud af det :D
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