Avatar billede dalsgrd Nybegynder
25. november 2006 - 16:52 Der er 6 kommentarer og
1 løsning

Timer-control til VB i Excel

Jeg er relativt ny indenfor VB-programmeringen.

Jeg har brug for en timer-control i et lille program, der skal kunne afvikles i et Excel-regneark. Så vidt jeg kan forstå på diskusionerne her på siden er der IKKE inkluderet sådan en control i den Visual Basic-version der følger med Excel.

Mit spørgsmål er, om der findes en billig/gratis add-on, så man kan få sig en timer i sit VB-script. ...eller kan man gøre et eller andet fikst, så man slipper for at skulle importere en timer?

Venlige hilsner
Niels
Avatar billede kabbak Professor
25. november 2006 - 17:24 #1
i excel bruges Application.OnTime, se om det er noget for dig

Med den kan man få excel til at udføre en kode på et bestemt tidspunkt.

jeg indsætter lige fra hjælpen:

OnTime Method
See AlsoApplies ToExampleSpecificsSchedules a procedure to be run at a specified time in the future (either at a specific time of day or after a specific amount of time has passed).

expression.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
expression    Required. An expression that returns an Application object.

EarliestTime    Required Variant. The time when you want this procedure to be run.

Procedure    Required String. The name of the procedure to be run.

LatestTime    Optional Variant. The latest time at which the procedure can be run. For example, if LatestTime is set to EarliestTime + 30 and Microsoft Excel is not in Ready, Copy, Cut, or Find mode at EarliestTime because another procedure is running, Microsoft Excel will wait 30 seconds for the first procedure to complete. If Microsoft Excel is not in Ready mode within 30 seconds, the procedure won’t be run. If this argument is omitted, Microsoft Excel will wait until the procedure can be run.

Schedule    Optional Variant. True to schedule a new OnTime procedure. False to clear a previously set procedure. The default value is True.

Remarks
Use Now + TimeValue(time) to schedule something to be run when a specific amount of time (counting from now) has elapsed. Use TimeValue(time) to schedule something to be run a specific time.

Example
This example runs my_Procedure 15 seconds from now.

Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
       
This example runs my_Procedure at 5 P.M.

Application.OnTime TimeValue("17:00:00"), "my_Procedure"
       
This example cancels the OnTime setting from the previous example.

Application.OnTime EarliestTime:=TimeValue("17:00:00"), _
    Procedure:="my_Procedure", Schedule:=False
Avatar billede dalsgrd Nybegynder
25. november 2006 - 18:28 #2
Det ser meget lovende ud. ...Jeg kan desværre bare ikke få det til at virke :o(

Har oprettet en form med en knap ("CommandButton1") og et tekstfelt ("TextBox1"). Dernæst har jeg skrevet følgende:

Private Sub StartTimer()
    Application.OnTime Now + TimeValue("00:00:01"), "whatToDo"
End Sub

Private Sub whatToDo()
    TextBox1.Value = CInt(TextBox1.Value) + 1
    StartTimer
End Sub

Private Sub CommandButton1_Click()
    TextBox1.Value = "1"
    StartTimer
End Sub

Planen var jo så, at TextBox1 skulle tælle opad hvert sekund, men der sker absolut intet (udover at boxens value bliver "1") når man trykker på knappen. Hvad gør jeg galt??
Avatar billede kabbak Professor
25. november 2006 - 19:30 #3
Dete er fordi timeren skal ligge i et almindelig modul

dette skal du have i Userformen

Private Sub CommandButton1_Click()
    TextBox1.Value = "1"
    StartTimer
End Sub

Private Sub CommandButton2_Click()
StopTimer
End Sub


og dette i et modul


Dim STid As Date

Public Sub StartTimer()
STid = Now + TimeValue("00:00:01")
    Application.OnTime STid, "whatToDo" ' starter timeren
End Sub

Public Sub whatToDo()
  UserForm1.TextBox1.Value = Int(UserForm1.TextBox1.Value) + 1
    StartTimer
End Sub

Public Sub StopTimer()
  Application.OnTime EarliestTime:=STid, _
    Procedure:="whatToDo", Schedule:=False ' stopper timeren
End Sub
Avatar billede dalsgrd Nybegynder
25. november 2006 - 19:50 #4
Helt perfekt!

Post et svar, så skal du få de velfortjente points.
Avatar billede kabbak Professor
25. november 2006 - 20:58 #5
et svar ;-))
Avatar billede kabbak Professor
25. november 2006 - 23:59 #6
tak for point
Avatar billede dalsgrd Nybegynder
26. november 2006 - 10:19 #7
Velbekomme :o)
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
Kategori
Kurser inden for grundlæggende programmering

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