Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleife und Timer gleichzeitig

Forumthread: Schleife und Timer gleichzeitig

Schleife und Timer gleichzeitig
13.03.2023 10:52:36
Karsten
Hallo,
unten habe ich einen Code. Meine Frage ist wie ich es hinbekomme, dass wenn CommandButton1 durch CommandButton3 in Schleife gesetzt wird, CommandButton1 weiterläuft, auch wenn ich CommandButton5 klicke.
Über Tipps und Eure Hilfe bin ich sehr Dankbar.
LG Karsten
Public Sub CommandButton1_Click()
CommandButton1.Enabled = False ' Button deaktivieren
CommandButton1.BackColor = &HFF&

timerSeconds = GetTimerSeconds() ' Zeit abhängig von der stufe festlegen

income = GetIncome() ' Einkommen abhängig von der Stufe festlegen

Do While timerSeconds > 0
CommandButton1.Caption = timerSeconds & " Sekunden"
DoEvents ' Aktualisierung des Labels erzwingen
timerSeconds = timerSeconds - 1 ' Zeit um 1 Sekunde reduzieren
Application.Wait (Now + TimeValue("0:00:01")) ' 1 Sekunde warten
Loop

einnahmen = einnahmen + income
Label1.Caption = Format((Label1.Caption) + income, "0.00 €") 'Kontostand aktualisieren
CommandButton1.Caption = "Produziere Möbelfolie" 'Überschrift des Buttons wieder zurücksetzen
CommandButton1.Enabled = True ' Button wieder aktivieren
CommandButton1.BackColor = &HFF00&


End Sub
Public Function GetTimerSeconds() As Integer
Dim baseSeconds As Integer
baseSeconds = 10
If level > 1 Then
baseSeconds = baseSeconds * 0.5 ^ (level - 1)
End If
If baseSeconds 1 Then
baseSeconds = 1
End If

GetTimerSeconds = baseSeconds

End Function

Public Function GetIncome() As Double
Dim baseIncome As Double

baseIncome = 1

If level > 1 Then
baseIncome = baseIncome * 1.5 ^ (level - 1)

End If
GetIncome = baseIncome

End Function

Public Sub CommandButton3_Click()
If Val(Label1.Caption) >= price2 Then ' Prüfen, ob Kontostand ausreichend ist
Label1.Caption = Format((Label1.Caption - price2), "0.00 €")
price2 = price2 * 2
CommandButton3.Visible = False
Label5.Visible = False

Do While True

CommandButton1_Click ' Die Schleife starten

Loop

Else

MsgBox "Kontostand nicht ausreichend, um Assistent zu starten.", vbExclamation, "Fehler"

End If
End Sub

Public Sub CommandButton5_Click()
CommandButton5.Enabled = False ' Button deaktivieren
CommandButton5.BackColor = &HFF&

timerSeconds2 = GetTimerSeconds2() ' Zeit abhängig von der stufe festlegen

income2 = GetIncome2() ' Einkommen abhängig von der Stufe festlegen

Do While timerSeconds2 > 0
CommandButton5.Caption = timerSeconds2 & " Sekunden"
DoEvents ' Aktualisierung des Labels erzwingen
timerSeconds2 = timerSeconds2 - 1 ' Zeit um 1 Sekunde reduzieren
Application.Wait (Now + TimeValue("0:00:01")) ' 1 Sekunde warten
Loop

einnahmen2 = einnahmen2 + income2
Label1.Caption = Format((Label1.Caption) + income2, "0.00 €") 'Kontostand aktualisieren
CommandButton5.Caption = "Produziere Kunstleder" 'Überschrift des Buttons wieder zurücksetzen
CommandButton5.Enabled = True ' Button wieder aktivieren
CommandButton5.BackColor = &HFF00&

End Sub
Public Function GetTimerSeconds2() As Integer
Dim baseSeconds2 As Integer
baseSeconds2 = 10
If level2 > 1 Then
baseSeconds2 = baseSeconds2 * 0.5 ^ (level2 - 1)
End If
If baseSeconds2 1 Then
baseSeconds2 = 1
End If

GetTimerSeconds2 = baseSeconds2

End Function

Public Function GetIncome2() As Double
Dim baseIncome2 As Double

baseIncome2 = 100

If level2 > 1 Then
baseIncome2 = baseIncome2 * 1.5 ^ (level2 - 1)

End If
GetIncome2 = baseIncome2

End Function
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife und Timer gleichzeitig
13.03.2023 11:35:39
ChrisL
Hi
Hier mal ein abstraktes Beispiel, um zwei Timer parallel laufen zu lassen (OnTime anstelle Wait).
Modul von Tabelle1
Private Sub CommandButton1_Click()
TimerSekunden1 = 6
Call CountDown1
End Sub
Private Sub CommandButton2_Click()
TimerSekunden2 = 4
Call CountDown2
End Sub
Standardmodul
Public TimerSekunden1 As Integer
Public TimerSekunden2 As Integer
Sub CountDown1()
If TimerSekunden1 = 0 Then
    Exit Sub
Else
    TimerSekunden1 = TimerSekunden1 - 1
    Worksheets("Tabelle1").CommandButton1.Caption = TimerSekunden1
    Application.OnTime Now + TimeValue("00:00:01"), "CountDown1"
End If
End Sub
Sub CountDown2()
If TimerSekunden2 = 0 Then
    Exit Sub
Else
    TimerSekunden2 = TimerSekunden2 - 1
    Worksheets("Tabelle1").CommandButton2.Caption = TimerSekunden2
    Application.OnTime Now + TimeValue("00:00:01"), "CountDown2"
End If
End Sub
cu
Chris
Anzeige
;

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