Avatar billede Claus Mester
10. januar 2004 - 20:40 Der er 11 kommentarer og
1 løsning

VBA word: Tid / stopur

Hej derude.

Jeg forsøger at skabe et stopur i VBA for Word.
Denne kode er det tætteste jeg er kommet, men det virker ikke helt:

Private Sub LblAltA_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim tid1, tid2
tid1 = Format(Time, "ss")
tid2 = tid1 + 10

Do Until tid1 = tid2
    LblMsg.Caption = "Msg: Ny ATP indtastning"
Loop
    LblMsg.Caption = "Msg:"
End Sub

Nogen der har et bud der kan hjælpe mig videre?

nicolaus
Avatar billede martin_moth Mester
10. januar 2004 - 21:10 #1
Det du forsøger vil aldrig virke.

1. Subben bliver kun kørt når MouseMove bliver triggeret - hvad hvis brugeren ikke bevæger musen?

2. tid1 bliver nulstillet hver gang mousemove bliver triggeret. tid2 vil derfor ALTID være 10 større end tid1.

3. Du skriver, at tid1=tid2 - hvad hvis musen ikke bliver bevæget efter netop 10 sekunder? Du skal nok skrive bruge <= istedet for =

Kan ikke huske om timer-kontrollen er tilgængelig i VBA, eller kun i VB. Hvis den er, er det den du skal bruge. Hvis den ikke er, må du omskrive din kode, så den virker - fx. flytte tid2 uden for din sub osv.
Avatar billede martin_moth Mester
10. januar 2004 - 21:19 #2
Desuden skal du tage højde for at programmet køres på et tidspunkt, hvor sekundtviseren står på fx. 55 sek.

55 + 10 = 65 - og time-funktionen vil ALDRIG returnere et tidspunkt med 65 sekunder - der er jo kun 0-59 sek i et minut.

Alt i alt er der lidt mere at arbejde med - god arbejdslyst :o)
Avatar billede Claus Mester
10. januar 2004 - 21:22 #3
Hmmm. Det MÅ da kunne lade sig gøre.
Jeg mener bestemt at jeg engang for længe siden, konstruerede en opstartssekvens til et program i VBA, der kørte på tid. Men jeg har selvfølgelig glemt hvordan :-/
Avatar billede martin_moth Mester
10. januar 2004 - 21:25 #4
Prøv at kik på mine kommentarer - det kan sagtens lade sig gøre, men der er 4-5 helt grundlæggende fejl du begår, som gør, at det aldrig vil virke. Ret dem, og så skal det nok lykkes
Avatar billede Claus Mester
10. januar 2004 - 21:33 #5
Har du et konstruktivt forslag til en løsning? - Så vil jeg gerne hæve pointsatsen til 30!
Avatar billede martin_moth Mester
10. januar 2004 - 21:34 #6
Men hvis du er frisk på at lave det hele om, kan du bruge denne kode:

Private Sub Test()
  LblMsg.Caption = "Msg: Ny ATP indtastning"
  Call paus(10)
  LblMsg.Caption = "Msg:"
End Sub

Sub paus(ByVal lang As Integer)
  mytime = DateAdd("s", lang, Time)
  Do While Not mytime <= Time
  DoEvents
  Loop
End Sub
Avatar billede martin_moth Mester
10. januar 2004 - 21:35 #7
Ovenstående er et konstruktivt forslag :o)
Avatar billede martin_moth Mester
10. januar 2004 - 21:35 #8
Jeg synes bare du skulle have at vide HVORFOR din kode ikke virker, det bliver man som regel meget klogere af :o)
Avatar billede Claus Mester
10. januar 2004 - 21:39 #9
Det blev jeg også. Og dit forslag virker fuldstændig efter hensigten. HERLIGT!

Tusinde tak!!!

nicolaus

ps. Har du også et forslag til, hvordan jeg kan klare opgaven UDEN at systemet låser i mellemtiden? (den var svær!!)
Avatar billede martin_moth Mester
10. januar 2004 - 21:46 #10
Ja, den var svær. Det har jeg ikke :o(
Avatar billede l3kris Nybegynder
13. januar 2004 - 21:24 #11
Her er en lille timer, jeg lavede i vba:

Dim StartTime, EndTime, ElapsedTime

Private Sub tglTimer_Click()
    If tglTimer.Value = True Then
        StartTime = Now
        EndTime = DateAdd("s", 30, StartTime)
        Do While StartTime < EndTime
            StartTime = Now
            ElapsedTime = EndTime - StartTime
            tglTimer.Caption = Format(ElapsedTime, "ss")
            DoEvents
        Loop
        Beep
        With tglTimer
            .Value = False
            .Caption = "Timer"
        End With
    End If
End Sub
Avatar billede Claus Mester
19. januar 2004 - 22:10 #12
Den virker også! - Tak for inputtet!!!
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