• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak stworzyć userform w vba, który odliczałby czas?

0 głosów
1,775 wizyt
pytanie zadane 25 lutego 2018 w Visual Basic przez Adam Domański Początkujący (370 p.)
Option Explicit
Dim Start As Single

Private Sub CommandButton1_Click()
  Dim H As Single
  Dim M As Single
  Dim S As Single
  Dim Stp As Single
  Start = Timer
  
  Do
    Stp = Timer - Start
    H = Int(Stp / 3600)
    M = Int((Stp - H * 3600) / 60)
    S = Stp - H * 3600 - M * 60
    Label1.Caption = Format(H, "00") & ":" & Format(M, "00") & ":" & Format(S, "00.0")
    DoEvents
  Loop While Start > 0
End Sub

Private Sub CommandButton2_Click()
  Start = 0
End Sub

Private Sub UserForm_Activate()
  Label1.Caption = ""
  CommandButton1.Caption = "Start"
  CommandButton2.Caption = "Stop"
End Sub

Do powyższego kodu chciałbym dodać jeszcze CommandButton3. Po kliknięciu CommandButton1 rozpoczyna się odliczanie czasu, po kliknięciu CommandButton2 następuje jego zatrzymanie. Powiedzmy, że czas zatrzymał się na 00:00:10,5. Po kliknięciu CommandButton3 liczenie czasu miałoby rozpocząć się ponownie, aczkolwiek od momentu, w którym zostało zatrzymane, czyli 00:00:10,5.

Poproszę o pomoc w tej kwestii. ;)

1 odpowiedź

0 głosów
odpowiedź 25 lutego 2018 przez iendrus Użytkownik (900 p.)

Może coś takiego:


Option Explicit
Dim Start As Single
Dim Stp As Single
Dim H As Single
Dim M As Single
Dim S As Single
Private Sub CommandButton1_Click()
 
  Start = Timer
   
  Do
    Stp = Timer - Start
    H = Int(Stp / 3600)
    M = Int((Stp - H * 3600) / 60)
    S = Stp - H * 3600 - M * 60
    Label1.Caption = Format(H, "00") & ":" & Format(M, "00") & ":" & Format(S, "00.0")
    DoEvents
  Loop While Start > 0
End Sub
 
Private Sub CommandButton2_Click()
  Start = 0
  Label1.Tag = Stp
End Sub

Private Sub CommandButton3_Click()
Start = Timer - Label1.Tag
  Do
    Stp = Timer - Start
    H = Int(Stp / 3600)
    M = Int((Stp - H * 3600) / 60)
    S = Stp - H * 3600 - M * 60
    Label1.Caption = Format(H, "00") & ":" & Format(M, "00") & ":" & Format(S, "00.0")
    DoEvents
  Loop While Start > 0
End Sub

Private Sub UserForm_Activate()
  Label1.Caption = ""
  CommandButton1.Caption = "Start"
  CommandButton2.Caption = "Stop"
End Sub

 

Podobne pytania

0 głosów
1 odpowiedź 1,674 wizyt
pytanie zadane 2 listopada 2018 w Visual Basic przez kubekzone Użytkownik (620 p.)
0 głosów
1 odpowiedź 1,396 wizyt
0 głosów
1 odpowiedź 318 wizyt
pytanie zadane 17 kwietnia 2016 w C i C++ przez 0xf Dyskutant (8,180 p.)

93,743 zapytań

142,683 odpowiedzi

323,300 komentarzy

63,330 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...