Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
308to312
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
308to312
308to312
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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.

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige