Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zähler mit Sekundentaktung

Forumthread: Zähler mit Sekundentaktung

Zähler mit Sekundentaktung
17.09.2003 10:27:25
Moni
Hallo Ihr Lieben,

hab da ein Problem. Und zwar versuche ich einen Zähler zu programmieren
der nach 5 Sekunden immer eins hochzählt.
Habe das in VB sehr schnell hinbekommen, jedoch ist das in VBA nicht so einfach,
da die Timer funktion fehlt.
Habe es soweit das die Systemzeit ausgegeben wird. Diese soll in einem anderen
Textfeld laufen.
Kann mir da von euch jemand weiterhelfen?

Mein VB-Code:

Option Explicit

Private nSek As Integer


Private Sub Form_Load()
' Timer Werte zuweisen
Timer1.Interval = 6000
'Zähler
nSek = 0
'Ausgabe in Bezeichnungsfeld
Label1.Caption = CStr(nSek)
End Sub



Private Sub Timer1_Timer()
' und wieder eine Sekunde vorbei
nSek = nSek + 1
Label1.Caption = CStr(nSek)
' Falls 10 Sekunden erreicht, Timer deaktivieren
If nSek >= 10 Then Timer1.Enabled = False
End Sub



Mein vorläufiger VBA-Code:


Private Sub UserForm_Layout()
Call Scroll_Text
End Sub



Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Stopped = 1
End Sub



Private Sub Scroll_Text()
Stopped = 0
Do
TextBox1 = Time
Call Pause(100, 1)  'Tempo des Wechsel
Loop Until Stopped = 1
End Sub



Private Sub Pause(ByVal Pau As Single, ByVal DoEv As Integer)
Call Sleep(Pau)
If DoEv = 1 Then DoEvents
End Sub



Private Sub CommandButton1_Click()
If Stopped = 1 Then
Stopped = 0
CommandButton1.Caption = "Stop"
Call Scroll_Text
Else
Stopped = 1
CommandButton1.Caption = "Start"
End If
End Sub


Danke schonmal im Voraus.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zähler mit Sekundentaktung
17.09.2003 10:46:06
Thomas Raschen
Hallo Moni,

schau dir mal die Application.Ontime Funktion an. Im Bsp. unten wird nach 5 sekunden die

Sub Schließen ausgeführt.
Kannst ja für dich abändern.
Gruß
Thomas

Sub startzeit()
On Error Resume Next
Application.OnTime EarliestTime:=DatA, Procedure:="Schließen", Schedule:=False
DatA = Time + CDate("0:05:00")
Application.OnTime DatA, "Schließen"
End Sub

Anzeige
AW: Zähler mit Sekundentaktung
17.09.2003 15:10:25
Moni
Hey Danke für die Antworten.
Das hat mir leider nicht so geholfen.
Der Timer läuft bei mir ohne Probleme.
Was ich brauche ist jedoch ein Zähler.
Der nach 5 Sekunden immer eine Zahl hoch zählt.
1
2
3...
Hab mich da vielleicht ein bisschen doof ausgedrückt.
Vielleicht habt ihr trotzdem noch nen Tipp für mich.
Der VB Code dazu lautet:

Option Explicit

Private nSek As Integer


Private Sub Form_Load()
' Timer Werte zuweisen
Timer1.Interval = 5000
'Zähler
nSek = 0
'Ausgabe in Bezeichnungsfeld
Label1.Caption = CStr(nSek)
End Sub



Private Sub Timer1_Timer()
' und wieder eine Sekunde vorbei
nSek = nSek + 1
Label1.Caption = CStr(nSek)
' Falls 10 Sekunden erreicht, Timer deaktivieren
If nSek >= 10 Then Timer1.Enabled = False
End Sub


Der funktioniert leider unter VBA nicht.
Gibt es da vielleicht so was ähnliches??

Liebe Grüße
Moni
Anzeige
AW: Zähler mit Sekundentaktung
17.09.2003 13:05:37
Ingo
Hallo Moni,

habe mir aus einem Forum mal folgenden Code abgezogen, der die Zeit permanent in einer Zelle weiterlaufen lässt.


Private c As Boolean, timezell As Range

Sub zeit_starten()
ActiveCell.Activate
If Selection.Value <> "" Then
MsgBox ("Achtung! die Zelle ist nicht leer")
Else
Set timezell = Application.Selection
ZeitFestLegen1
c = True
End If
End Sub



Sub ZeitFestLegen1()
Zeitangabe = Time + TimeSerial(0, 0, 1)
Application.OnTime Zeitangabe, "eintragen1"
End Sub



Sub eintragen1()
timezell.Value = Time
If c = True Then ZeitFestLegen1
End Sub


'Damit kann die Ausführung abgebrochen werden:

Sub notstopp()
c = False
End Sub


Vielleicht kannst Du die mechanismen ja brauchen

Gruß Ingo
Anzeige
Zähler mit 5-Sekundentaktung
17.09.2003 15:57:46
Ingo
Hallo Moni,
folgende Variante erhöht in der beim macrostart aktiven zelle alle 5 sekunden den Wert um 1, wenn du anstatt timecell.value den wert txtbox.caption wählst sollte das macro auch bei dir laufen.(etwas feintuning vorausgesetzt ;-))

Private c As Boolean, timezell As Range

Sub zeit_starten()
ActiveCell.Activate
If Selection.Value <> "" Then
MsgBox ("Achtung! die Zelle ist nicht leer")
Else
Set timezell = Application.Selection
ZeitFestLegen1
c = True
End If
End Sub



Sub ZeitFestLegen1()
Zeitangabe = Time + TimeSerial(0, 0, 5)
Application.OnTime Zeitangabe, "eintragen1"
End Sub



Sub eintragen1()
timezell.Value = timezell.Value + 1
If c = True Then ZeitFestLegen1
End Sub


'Damit kann die Ausführung abgebrochen werden:

Sub notstopp()
c = False
End Sub


Ich hoffe, das hilft Dir weiter

Gruß Ingo
Anzeige
;
Anzeige

Infobox / Tutorial

Einen Zähler mit Sekundentaktung in Excel erstellen


Schritt-für-Schritt-Anleitung

Um einen Sekunden Zähler in Excel zu erstellen, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Anleitung:

  1. Öffne Excel und aktiviere das Entwicklertool:

    • Gehe zu "Datei" > "Optionen" > "Menüband anpassen" und aktiviere das "Entwicklertools"-Feld.
  2. Erstelle ein neues VBA-Modul:

    • Klicke auf "Entwicklertools" > "Visual Basic".
    • Im VBA-Editor wähle "Einfügen" > "Modul".
  3. Füge folgenden Code ein:

    Dim c As Boolean
    Dim timezell As Range
    
    Sub zeit_starten()
       ActiveCell.Activate
       If Selection.Value <> "" Then
           MsgBox ("Achtung! die Zelle ist nicht leer")
       Else
           Set timezell = Application.Selection
           ZeitFestLegen1
           c = True
       End If
    End Sub
    
    Sub ZeitFestLegen1()
       Zeitangabe = Time + TimeSerial(0, 0, 5) ' Timer 5 Sekunden
       Application.OnTime Zeitangabe, "eintragen1"
    End Sub
    
    Sub eintragen1()
       timezell.Value = timezell.Value + 1
       If c = True Then ZeitFestLegen1
    End Sub
    
    Sub notstopp()
       c = False
    End Sub
  4. Starte den Zähler:

    • Wähle eine Zelle aus, in der der Zähler erscheinen soll, und führe das zeit_starten-Makro aus.
  5. Beende den Zähler:

    • Rufe das notstopp-Makro auf, um den Zähler anzuhalten.

Häufige Fehler und Lösungen

  • Fehler: "Die Zelle ist nicht leer":

    • Lösung: Stelle sicher, dass die ausgewählte Zelle leer ist, bevor du das Makro startest.
  • Fehler: Der Zähler zählt nicht hoch:

    • Lösung: Überprüfe, ob das Makro korrekt ausgeführt wird und die Application.OnTime-Funktion richtig konfiguriert ist.

Alternative Methoden

Wenn du eine andere Methode bevorzugst, kannst du die Application.OnTime-Funktion verwenden, um eine Aktion in bestimmten Zeitintervallen auszuführen. Hier ist ein Beispiel:

Sub startzeit()
    Dim DatA As Date
    On Error Resume Next
    Application.OnTime EarliestTime:=DatA, Procedure:="Schließen", Schedule:=False
    DatA = Time + CDate("0:05:00") ' Timer 5 Sekunden
    Application.OnTime DatA, "Schließen"
End Sub

Du kannst dieses Beispiel anpassen, um einen Zähler zu erstellen, der jede 5 Sekunden hochzählt.


Praktische Beispiele

Hier ist ein praktisches Beispiel für einen Zähler mit Sekundentaktung:

  • Erstelle eine UserForm mit einem Label und einem Button.
  • Verwende den folgenden Code in der UserForm:
Private Sub UserForm_Initialize()
    nSek = 0
    Label1.Caption = CStr(nSek)
    Timer1.Interval = 5000
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    nSek = nSek + 1
    Label1.Caption = CStr(nSek)
    If nSek >= 10 Then Timer1.Enabled = False
End Sub

Dieses Beispiel zählt alle 5 Sekunden hoch, bis 10 erreicht ist.


Tipps für Profis

  • Nutze Debugging in VBA, um sicherzustellen, dass dein Code korrekt funktioniert.
  • Experimentiere mit verschiedenen Zeitintervallen, um den Zähler an deine Bedürfnisse anzupassen.
  • Verwende DoEvents, um sicherzustellen, dass dein Timer die Benutzeroberfläche nicht blockiert.

FAQ: Häufige Fragen

1. Wie kann ich den Zähler anhalten? Du kannst das notstopp-Makro aufrufen, um den Zähler zu stoppen.

2. Kann ich den Zeitintervall ändern? Ja, ändere einfach die Zahl in TimeSerial(0, 0, 5) auf die gewünschte Anzahl an Sekunden.

3. Funktioniert das in allen Excel-Versionen? Ja, die meisten Versionen von Excel, die VBA unterstützen, können diesen Code ausführen. Stelle sicher, dass du die Entwicklertools aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige