Avatar billede hnto Nybegynder
08. juni 2012 - 08:21 Der er 6 kommentarer og
1 løsning

Timer function

jeg har en kode der afvikles på en form

der er i koden en if / else sætning hvor jeg gerne vil have sat en timer funktion ind der gør at koden venter 2 sekunder med at fortsætte.

hvordan ser vba koden ud for en timer funktion ?

kan ikke finde noget konkret på dette synes jeg...
Avatar billede brops Nybegynder
08. juni 2012 - 08:36 #1
mit bedste bud selv om det er år og dag siden jeg har kigge på VBA

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

sleep 2000

sleep 2000 sætter du selv ind hvor der skal være det delay
Avatar billede mugs Novice
08. juni 2012 - 09:05 #2
Private Sub Form_Timer()
MsgBox "hej"
Me.TimerInterval = 0
End Sub

Private Sub Kommandoknap8_Click()
Me.TimerInterval = 2000

End Sub
Avatar billede hnto Nybegynder
08. juni 2012 - 09:25 #3
hmmm..

Det er progresbar jeg er ved at lave da den Thomas Jepsen har på hjemmesiden kun virker hver 5 gang...

jeg har en form hvor jeg har indsat et rektangel (box1)

så har jeg prøver med nedenstående kode on open på formen, men jeg kan ikke gennemskue hvorfor den altid giver sammen tid på eksekveringen af koden....

fekst kan jeg godt få rektanglet til at arbejde langsommere frem, men så når den måske kun halvvejs inden msgboksen "hej med dig" alligevel kommer, og den skulle først komme når den samlede længde på 8000 var nået.



Public Sub Form_Open(Cancel As Integer)
Dim CurrentProgress As Integer
Dim box1TotalWidth As Long
Me.Box1.Width = "0"
box1TotalWidth = "8000"

For CurrentProgress = 1 To box1TotalWidth
    Me.Box1.Width = (box1TotalWidth / 1000) + CurrentProgress
    If Me.Box1.Width < box1TotalWidth Then
      Me.Repaint
DoEvents
 
        Else
        GoTo 1:
        End If
Next CurrentProgress

1:
MsgBox ("hej med dig")

End Sub
Avatar billede hnto Nybegynder
08. juni 2012 - 14:51 #4
har selv løst det...
Avatar billede hnto Nybegynder
08. juni 2012 - 14:59 #5
Private Sub Command48_Click()
Dim CurrentProgress As Long
Dim box1TotalWidth As Long
Dim Text2 As Integer
Me.Text2.Visible = True
Me.Box1.Visible = True
Form.Width = "8000"
Me.Box1.Width = "0"
box1TotalWidth = "8000"
Me.Text2.Value = "0"
Do
    Me.Box1.Width = (box1TotalWidth) / 8000 + (CurrentProgress / 3) ' Hvis du gør tallet "3" større tager kørslen længere tid.. juster efter behov
    If Me.Box1.Width <= box1TotalWidth Then
      Me.Repaint
      CurrentProgress = CurrentProgress + 1
Me.Text2.Value = CurrentProgress / "239" & " %" ' divisionsfaktor der blot sikrer at tallet giver 0-100 %
        Else
        GoTo 1:
        End If
Loop
1:
Me.Text2.Visible = False
Me.Box1.Visible = False
Me.Detaljesektion.Visible = True
Me.potential.Requery
Me.Text57.Requery
Me.Text62.Requery
Me.Text67.Requery
Me.Text69.Requery
Me.Label50.Visible = True
Me.Label56.Visible = True
Me.potential.Visible = True
Me.Label58.Visible = True
Me.Text57.Visible = True
Me.Text62.Visible = True
Me.Text67.Visible = True
Me.Text69.Visible = True
Me.Text75.Visible = True
End Sub
Avatar billede mugs Novice
08. juni 2012 - 14:59 #6
fint - Og hvad var løsningen.
Avatar billede hnto Nybegynder
08. juni 2012 - 15:54 #7
se ovenfor...
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