VBA Stoppuhr nur mit Minuten

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    VBA Stoppuhr nur mit Minuten

    Hallo Leute,

    ich würde gerne eine Stoppuhr in VBA für Exel 2010 haben, nur leider finde ich nichts brauchbares und so selbst habe ich leider keine Idee.

    Die Stoppuhr sollte nur in Minunten laufen, es müssten also in der Zelle auch nur die Minuten gezählt werden. Es wäre gut wenn Sekunden auch, diese aber bei Rechnungen mit Bezug zur Zelle nicht gewertet werden.

    Eine Start-Stop Prozedur würde ich auch brauchen.

    Wie gehe ich das denn am besten an? Ich will später die Minuten als Ganzzahlen verwenden a la 15 Minunten 34 Sekunden (15:34) = 15

    Grüße

    und danke im Vorraus
    Die eleganteste Methode ist sicher ein Timer.
    Allerdings kannst du bei der von dir gewünschten Genauigkeit problemlos mit der poor-man's-method arbeiten:

    So in etwa:

    Visual Basic-Quellcode

    1. Private MustStop As Boolean
    2. Sub StartTimer()
    3. StartTime = Now
    4. Do
    5. Application.Wait DateAdd("s", 1, Now)
    6. DoEvents
    7. Loop Until MustStop
    8. UsedTime = Format(Now - StartTime, "nn:ss")
    9. End Sub
    10. Sub StopTimer()
    11. MustStop = True
    12. End Sub

    Die beiden Subs legst du auf Buttons.
    Zwischendrin, kannst du dir noch die Minuten ausrechnen und anzeigen.

    Edit:
    Die Methode funktioniert natürlich nur brauchbar, wenn du Anwendung als Standalone-Anwendung betreibst.
    Falls du nebenher noch Berechnungen laufen lassen oder Excel-Eingaben tätigen willst, solltest du wirklich mit einem "echten" Timer arbeiten.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()

    Ansonsten etwas komfortabler ohne Excel anzuhalten:
    Ein Worksheet (Tabelle) mit folgenden Code:

    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Private bUhrZelle As Boolean
    2. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    3. If bUhrZelle Then
    4. If Cells(1, 1) > 0 Then
    5. Application.OnTime Now + TimeValue("00:00:01"), "StoppUhr"
    6. If Not bUhrAn Then
    7. StartZeit = Now
    8. End If
    9. bUhrAn = True
    10. Else
    11. bUhrAn = False
    12. letzteStoppZeit = StoppZeit
    13. Cells(1, 3).NumberFormat = "HH:MM:SS"
    14. Cells(1, 3).Value = letzteStoppZeit
    15. Application.Calculate
    16. End If
    17. End If
    18. If Target.AddressLocal = "$A$1" Then
    19. bUhrZelle = True
    20. Else
    21. bUhrZelle = False
    22. End If
    23. End Sub


    und ein Modul mit folgendem Code:

    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Public StartZeit As Date
    2. Public letzteStoppZeit As Date
    3. Public bUhrAn As Boolean
    4. Public StoppZeit As Date
    5. Public Sub StoppUhr()
    6. If bUhrAn Then
    7. Application.OnTime Now + TimeValue("00:00:01"), "StoppUhr"
    8. StoppZeit = Now - StartZeit
    9. Worksheets("Tabelle1").Cells(1, 2).NumberFormat = "@"
    10. Worksheets("Tabelle1").Cells(1, 2).Value = Format(StoppZeit, "h:mm")
    11. End If
    12. End Sub
    13. Public Function lStoppZeit(ByVal dummy As Date) As Date
    14. lStoppZeit = letzteStoppZeit
    15. End Function


    Um mit der letzten Zeit zu rechnen muss die Funktion lStoppZeit(Zelle mit Datumsformat) genutzt werden.

    z.B.

    Quellcode

    1. =lstoppzeit(C1)


    Die Uhr läuft, sobald ein Wert größer 0 in Zelle A1 ist und stoppt bei einem Wert <=0
    Gruß
    Peterfido

    Keine Unterstützung per PN!