Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Stopwatch vba probleem in excel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Ik ben momenteel bezig om een stopwatch te integreren in excel dit zodat ik de uitkomsten hiervan direct weg kan laten schrijven naar een dataveld zodat dit gelijk in mijn registratiesysteem komt. :) Nu is het probleem dat ik niet zo'n held ben in VBA, onderstaande code heb ik gevonden en de startbutton werkt. Excel begint te zeuren dat er variabelen niet gedefinieerd zijn zodra ik de stop, reset of lap buttons aanklik.

Hieronder staat de code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Option Explicit

Dim StopTimer As Boolean
Dim Etime As Single
Dim Etime0 As Single
Dim LastEtime As Single
Dim lapnr As Integer

Private Sub ExitBtn_Click()
StopTimer = True
Unload Me
End Sub

Private Sub CommandButton1_Click()

End Sub

Private Sub ResetBtn_Click()
StopTimer = True
Etime = 0
Etime0 = 0
LastEtime = 0
ElapsedTimelbl.Caption = "00:00:00.00"
End Sub
Sub StartBtn_Click()
StopTimer = False
Etime0 = Timer() - LastEtime

Do Until StopTimer
Etime = Int((Timer() - Etime0) * 100) / 100
If Etime > LastEtime Then
LastEtime = Etime
ActiveSheet.Cells(3, 2).Value = Format(Etime / 86400, "hh:mm:ss.") & Format(Etime * 100 Mod 100, "00")
DoEvents
End If
Loop

End Sub

Private Sub StopBtn_Click()
StopTimer = True
Laplbl = ""
Beep
End Sub

Private Sub LapBtn_click()
Laplbl.Caption = ElapsedTimelbl
lapnr = lapnr + 1
Range("A" & lapnr) = "lap " & lapnr
Range("B" & lapnr) = ElapsedTimelbl
End Sub

Private Sub UserForm_Activate()
Range("A:B") = ""
ElapsedTimelbl = "00:00:00.00"
End Sub


Kan iemand mij helpen met deze foutmelding? uitleggen welk stukje code er mist, en hierop toelichting geven zou goed zijn voor mijn inzichten. ;)

[ Voor 3% gewijzigd door Verwijderd op 04-04-2009 17:00 ]


Verwijderd

het statement 'option explicit' wil zeggen dat alle variabelen expliciet gedeclareerd dienen te worden (maar niet noodzakelijk hun type).
als je effectief een fout krijgt bij klikken op de stop knop (StopBtn) wil dit bv. zeggen dat laplbl niet gedefinieerd is als variabele (noch in de scope van de userform, noch in de scope van de sub, noch publiek op projectniveau (dit laatste is sowieso onwaarschijnlijk)). bekijk eens online help van excel mbt 'option explicit'.
tussen haakjes : als laplbl een label is, dan moet je de eigenschap 'caption' gebruiken om het label leeg te maken (om de tekst van het label te lezen of te schrijven).

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23:42
Mijn water zegt dat het te maken heeft met het verschil tussen "sub" en "private sub":
Citaat uit Help (F1): "Als het argument Public, Private of Friend niet expliciet is opgegeven, is Public de standaardinstelling voor de procedures Sub."


Edit: Antwoord van _heretic_ lijkt me meer juist 8)7

[ Voor 16% gewijzigd door Bolukan op 05-04-2009 00:00 ]


Verwijderd

Topicstarter
Hartstikke bedankt voor jullie antwoorden _/-\o_

Hieronder mijn oplossing. Op het formulier sub heb ik een tekstvak als Elapsedlbl gedefinieerd.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Option Explicit

Dim StopTimer As Boolean
Dim Etime As Single
Dim Etime0 As Single
Dim LastEtime As Single
Dim ElapsedTimelbl As Integer
Dim lapnr As Integer

Private Sub Laplbl_Click()

End Sub

Private Sub Startbtn_Click()
StopTimer = False
Etime0 = Timer() - LastEtime

Do Until StopTimer
Etime = Int((Timer() - Etime0) * 100) / 100
If Etime > LastEtime Then
LastEtime = Etime
ActiveSheet.Cells(1, 4).Value = Format(Etime / 86400, "hh:mm:ss.") & Format(Etime * 100 Mod 100, "00")
DoEvents
End If
Loop

End Sub

Private Sub Lapbtn_Click()
Dim Elalbl As Integer
lapnr = lapnr + 1
Laplbl.Caption = Format(Etime / 86400, "hh:mm:ss.") & Format(Etime * 100 Mod 100, "00")
Range("A" & lapnr) = "lap " & lapnr
Range("B" & lapnr) = Format(Etime / 86400, "hh:mm:ss.") & Format(Etime * 100 Mod 100, "00")
End Sub

Private Sub Stopbtn_Click()
StopTimer = True
lapnr = lapnr + 1
Range("A" & lapnr) = "lap " & lapnr
Range("B" & lapnr) = Format(Etime / 86400, "hh:mm:ss.") & Format(Etime * 100 Mod 100, "00")
Laplbl.Caption = Format(Etime / 86400, "hh:mm:ss.") & Format(Etime * 100 Mod 100, "00")
Beep
End Sub

Private Sub ResetBtn_Click()
StopTimer = True
Etime = 0
Etime0 = 0
LastEtime = 0
Laplbl.Caption = "00:00:00.00"
End Sub

Private Sub Exitbtn_Click()
StopTimer = True
Unload Me
End Sub


Van mij mag dit topic op slot