25. november 2006 - 16:52Der 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?
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"
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??
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.