1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel Countdown funktioniert nich

Discussion in 'Office-Programme' started by MZurmuehlen, Jul 23, 2008.

Thread Status:
Not open for further replies.
  1. Hallo,
    Mein Count funktioniert nich richtig und ich würde gern wissen wo da der fehler liegt:
    ich schreibe in D2 meine zeit rein die runterlaufen soll bis 0 und dann ganz normal stehen bleiben soll
    dann gibts da noch einen startbutton und einen stopbutton der das ganze pausieren soll
    der startbutton und der VBA-Code funktionieren ja auch ansatzweise, aber wenn er in die endlosschleife gehen soll sagt er "Makro ... nicht gefunden"
    hier der code:
    Option Explicit

    Public DaEt As Date
    Public boAction As Boolean
    Const daZeit As Date = "0:00:01"

    Sub FT1()
    With ThisWorkbook.Worksheets("FT 1")
    If .Range("D1") > daZeit Then
    .Range("D1") = .Range("D1") - daZeit
    DaEt = Now + daZeit
    Application.OnTime DaEt, "FT1"
    Else
    .Range("D1") = 0
    End If
    End With
    End Sub

    Sub FT1_beenden()
    On Error Resume Next
    Application.OnTime EarliestTime:=DaEt, Procedure:="FT1", Schedule:=False
    End Sub

    Private Sub CommandButton1_Click()

    If Range("D1") = 0 Then Exit Sub
    FT1
    End Sub

    Private Sub CommandButton2_Click()
    boAction = False
    FT1_beenden
    End Sub

    bin gespannt auf eure lösungsvorschläge
    MFG
     
  2. brum

    brum Kbyte

    Tritt der Fehler schon im CommandButton1_Click-Makro auf? Wenn ja, dann versuch mal ein "Call" vor den Prozedurnamen zu setzen...

    Gruss
    Bruno
     
  3. ne das kann nicht sein, denn er läuft ja zumindest einmal die prozedur durch das heißt er zieht 1 von der zeit ab bloß dann gehts nich weiter
     
  4. Urs2

    Urs2 Megabyte

    Schon wieder... Du schreibst D2, das Makro arbeitet aber mit D1...

    Ich sehe keine Endlosschlaufe!
    Die Zeile [Application.OnTime DaEt, "FT1"] gibt den Auftrag, nach der Zeit DaET das Makro "FT1" auszuführen.
    Das geht aber nicht, das Makro kann sich nicht selbst aufrufen, es sucht deshalb anderswo... und findet nichts...

    Wenn Du so etwas brauchst, muss die Schlaufe innerhalb des Subs sein... aber VBA ist dafür wirklich nicht ideal.
    Wenn das Makro einmal läuft kann man es nur noch killen...
    ...ausser es zeigt von Zeit zu Zeit eine MessageBox, die das Beenden abfragt...

    Gruss Urs
     
  5. wie würdest du denn so einen countdown erstellen?
    gruß mzurmuehlen
     
  6. Hascheff

    Hascheff Moderator

    Hallo,
    ich poste mal, bevor ich teste. Möglicherweise stürzt er ja ab.
    Du weist einem Datum einen Text zu. Es muss heißen
    Const daZeit As Date = 1 / 3600

    Du rufst in einer Sub eine andere auf. Das funktioniert nicht.

    Mein Vorschlag:
    Code:
    Option Explicit
    Public DaEt As Date
    Public boAction As Boolean
    
    Private Sub ToggleButton1_Click()
    boAction = Not boAction
    If boAction Then
            If Range("D1") > 0 Then
                ToggleButton1.Caption = "Stopp"
                DaEt = Now + Range("D1")
                Do While DaEt < Now
                    Range("D1") = DaEt - Now
                    Loop
                End If
        Else
            ToggleButton1.Caption = "Start"
        End If
    End Sub
    
    Private Sub Worksheet_Activate()
    boAction = False
    End Sub
    
    Ein Problem habe ich noch: "Stopp" wird nicht funktionieren, da ja die Sub noch läuft.

    Edit: Ach ja, "Call" gibt es ja auch noch.

    Edit2: End If
    eingefügt.

    Edit3: Noch ein Fehler korrigiert: Excel abgestürzt.
    Edit4: Doch nicht. Noch ein Fehler korrigiert.

    Edit5: Also jetzt zählt er schon mal runter.
     
    Last edited: Jul 24, 2008
  7. Urs2

    Urs2 Megabyte

    Naja... wenn alle Fernsehsender nur noch Konserven senden...
    ...bringt das Betrachten einer sich zurückzählenden Zelle... doch ein immer wieder neues, spannendes Bild...

    Als Spielerei, mit anderer Vorgehensweise als Hascheff >

    Code:
    Option Explicit
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
    Sub Timer1()
    Dim tValue As Date
    Dim tEnd As Date
    Dim tSleep As Integer
    
    tValue = "00:00:01"     '= Zählsprung
    tEnd = "00:00:00"       '= Endpunkt
    tSleep = 1000           '= Tausendstel Sekunden
    
                            'erlaubt die Esc-Taste ohne dumme Rückfrage
        On Error GoTo ErrHandler
        Application.EnableCancelKey = xlErrorHandler
    
        ActiveWorkbook.Sheets("Tabelle1").Activate
    
        With Range("D1")
            Do While .Value > tEnd
                .Value = .Value - tValue
                Sleep tSleep
            Loop
        End With
    
    ErrHandler:
    
    End Sub
    Das "Sleep" besitzt Excel nicht, es muss es vom Windows-Kernel ausborgen...
    Die ErrorHandler-Zeilen erlauben das Abbrechen über "Esc" ohne Gemecker...
    Mit der Stoppuhr kann man dann berechnen, ob man tSleep mit ±x Tausendstel-Sekunden an die Atomzeit anpassen will...

    Funktion >

    - Start über einen Button
    - Die Zelle D1 (als xx:xx:xx) wird zurückgezählt bis Null > Ende!
    - Abbruch mit der Escape-Taste
    - Unterbruch mit der Escape-Taste und dann Neustart des Makros mit dem gleichen Button

    Falls Du das aber als "arithmetischen Fortschrittsbalken" angedacht hattest >
    Vergiss es >>> Excel-VBA kann sehr viel, aber immer nur eine Sache nach der Anderen...

    Gruss Urs
     
  8. vielen dank für die mühe und die vorschläge.
    ich werde mir dann mal überlegen wie ich das mache
    gruß MZurmuehlen
     
Thread Status:
Not open for further replies.

Share This Page