Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
Hallo zusammen. Eure Hilfe ist wieder mal gefragt  Ich brauche eine Makro wo die Zahl beim starten(aktivieren) sich automatisch hochzählt. z.B. Ich habe einen Behälter wo ich befüllen möchte(die Anzeige in der Zeile B5 ist = 0), jetzt möchte ich durch Makro Aktivierung den Wert bis bestimmten Wert hochzählen lasse, z.B. bis 50 in bestimmten Rhythmus, z.B.(+2) 0 - 2 - 4 - 6 .... 50 Ich habe eine Makro wo ich den Countdown starte und der Wert wird runtergezählt , aber jetzt brauche ich andersrum von 0 bis 50.. Code: Option Explicit
Private ldtmTimer As Date
Public Sub Timer_On() Timer_Off ldtmTimer = Now + TimeSerial(0, 0, 15) AnzeigeRestzeit Application.OnTime ldtmTimer, "Timer_Prozedur" End Sub
Public Sub Timer_Off() On Error Resume Next Application.OnTime ldtmTimer, "Timer_Prozedur", , False On Error GoTo 0 ldtmTimer = 0 AnzeigeRestzeit bolStopp:=True End Sub
Public Sub Timer_Prozedur() Timer_Off If ActiveSheet.Range("F15").Value < 50 Then MsgBox "<50" Else MsgBox ">=50" End If End Sub
Sub AnzeigeRestzeit(Optional bolStopp As Boolean) Static datNextTime As Date If Not bolStopp Then With Range("A1") '.NumberFormat = "General" .Value = Application.RoundUp(Application.Min(0, Now - ldtmTimer) * -86400, 0) End With datNextTime = Now + TimeSerial(0, 0, 1) Application.OnTime datNextTime, "AnzeigeRestzeit", , True Else On Error Resume Next Application.OnTime datNextTime, "AnzeigeRestzeit", , False On Error GoTo 0 datNextTime = 0 End If End Sub
ich habe schon versucht zu googeln, aber erfolglos. Bin wirklich für jede Hilfe Dankbar  viele Grüße Andre
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
im Prinzip
If Range("B5").Value < 50 Then Range("B5").Value = Range("B5").Value + 2
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
Hallo Andre, vielen Dank für schnelle Antwort, aber das ist glaube ich nicht ganz was ich brauche oder verstehe ich was falsch  Wenn ich diese Code als Private Sub einsetze, dann wird mein Wert sofort auf 50 katapultiert, wenn ich als Modul einsetzte, dann wird der Wert bei jede Makroausführung um 2 erhöht bis ich 50 erreiche => soweit habe ich verstanden(ausprobiert). Tut mir leid, bin kein VBA-Profi  Ich möchte das der Wert von 0 bis z.B. 50 in +2 Schritten, aber langsamer, bzw. in 5-10 Sekunden steigt, dass man das auch sieht, dass der Wert sich verändert - keine Blitzveränderung  Z.B. 0 bis 50 in Sekundentakt(+2) ungefähr => 25 Sekunden... wenn (+5), dann ca 10 Sekunden. Ich hoffe, dass ich genauer erklären konnte  Viele Grüße Andre
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
der Code muss in ein Makro, welches alle n Sekunden ausgeführt wird. Du hast z.B. jede Sekunde Dein Makro AnzeigeRestzeit, wo Du in A1 die Zeit einträgst. Dort könnte der Code rein mit einer zusätzlichen Bedingung, dass bei der 50 Schluss ist. Das Makro muss danach ja nicht umsonst weiterlaufen.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
Ich bin in Excel/VBA noch ziemlich Anfänger - lerne durch verschiedene Tutorials(bei Youtube) aber es dauert leider noch, da ich EXCEL erst vor 4-5 Monaten richtig kennengelernt habe. Wenn du mir mein obenstehendes Makro verändern würdest, oder neues basteln, würde ich ich dir sehr Dankbar sein :23: P.S: Ich würde sogar Geld bezahlen, wenn jemand aus Baden-Württemberg(Kreis Freiburg-Karlsruhe) bereit wäre mir Unterstützung beim lernen(BVA-Grundbausteinen) geben würde :23:  Viele Grüße Andre
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, insgesamt könnte das so aussehen, wenn ich Deinen Ursprungscode verwende. Ich hab da ein paar andere Namen verwendet, dadurch kann es unabhängig / zusätzlich zum bisherigen laufen. Code: Option Explicit
Sub Start() Anzeige50 End Sub
Sub Anzeige50(Optional bolStopp As Boolean) 'Variablendeklaratione Static datNextT As Date 'Wenn die Stop-Variable nicht wahr ist und der Zellinhalt B5 <50, dann If Not bolStopp And Range("B5").Value < 50 Then 'Zellinhalt B5 um 2 erhoehen Range("B5").Value = Range("B5").Value + 2 'Zeit fuer naechsten Durchlauf festlegen, hier + 10 s datNextT = Now + TimeSerial(0, 0, 10) 'Makro aufrufen nach festgelegter Zeit Application.OnTime datNextT, "Anzeige50", , True 'anderenfalls (Wenn die Stop-Variable nicht wahr ist und der Zellinhalt B5 <50, dann) Else 'Bei Fehler weiter mit naechster Programmanweisung On Error Resume Next 'OnTime - Ablauf beenden Application.OnTime datNextT, "Anzeige50", , False 'Fehlerbehandlung zuruecksetzen On Error GoTo 0 'Zeit auf 0 setzen datNextT = 0 'Ende Wenn die Stop-Variable nicht wahr ist und der Zellinhalt B5 <50, dann End If End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Andrek
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
:23: :23: :23: Vielen, vielen Dank! Schnell und dazu noch mit Beschreibung - das ist genau das was ich brauche um die einzelne Schritte zu verstehen!  Vielen herzlichen Dank :98: Liebe Grüße Andre
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
(02.11.2020, 21:59)schauan schrieb: Hallöchen,
insgesamt könnte das so aussehen, wenn ich Deinen Ursprungscode verwende. Ich hab da ein paar andere Namen verwendet, dadurch kann es unabhängig / zusätzlich zum bisherigen laufen.
Code: Option Explicit
Sub Start() Anzeige50 End Sub
Sub Anzeige50(Optional bolStopp As Boolean) 'Variablendeklaratione Static datNextT As Date 'Wenn die Stop-Variable nicht wahr ist und der Zellinhalt B5 <50, dann If Not bolStopp And Range("B5").Value < 50 Then 'Zellinhalt B5 um 2 erhoehen Range("B5").Value = Range("B5").Value + 2 'Zeit fuer naechsten Durchlauf festlegen, hier + 10 s datNextT = Now + TimeSerial(0, 0, 10) 'Makro aufrufen nach festgelegter Zeit Application.OnTime datNextT, "Anzeige50", , True 'anderenfalls (Wenn die Stop-Variable nicht wahr ist und der Zellinhalt B5 <50, dann) Else 'Bei Fehler weiter mit naechster Programmanweisung On Error Resume Next 'OnTime - Ablauf beenden Application.OnTime datNextT, "Anzeige50", , False 'Fehlerbehandlung zuruecksetzen On Error GoTo 0 'Zeit auf 0 setzen datNextT = 0 'Ende Wenn die Stop-Variable nicht wahr ist und der Zellinhalt B5 <50, dann End If End Sub
Hallo Andre und alle andere Mitglieder, bin mit der Code auf Problem gestoßen und zwar: habe diese Makro bei anderen Projekt eingesetzt und folgendes Problem kam hoch: z.B. Makro wird gestartet und geprüft, ob der Wert in der Zelle B5 unter 50 liegt, wenn nicht der Fall ist, dann wird mein Wert in der Zelle F5 um 2 erhöht bis der Wert in der Zelle B5 nicht über 50 liegt. Der Wert in der Zähle B5 ändert sich und bei jede Änderung wird wieder Abgefragt, ob der Wert über 50 liegt, wenn nicht dann wird wieder die Zelle F5 um +2 erhöht. somit mit bei jede Änderung(wenn die Bedienung nicht zutrifft) wird mein Wert in der Zelle F5 um 2 erhöht, bei nächste Abfrage +2 +2(schon um 4), dann +2 +2 +2 (schon um 6) usw.. Hoffentlich mein Problem ist verständlich. wenn ich die Abfrage erneut ausführe - wie kann ich dann die vorige Abfrage stoppen, so dass die nur 1 mal ausgeführt wird und nicht 2-3-4- Fach(parallel) abläuft??? Ich habe schon internet durchgesucht aber wurde nicht fündig wie ich aktuelle Makro stoppen kann bevor ich neue Abfrage ausführe! Bitte um Hilfe! LG Andre
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, nimm eine weitere, globale Variable wo Du den Start steuern kannst. Option Explicit Public boStart as Boolean Code: Sub Start() If boStart = False Then boStart = True Anzeige50 End If End Sub
Im Else-Zweig vom anderen Makro setzt Du die Variable auf False.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Andrek
Registriert seit: 22.06.2020
Version(en): Professional Plus 2019
Hallo André,
vielen, vielen Dank! :23: :100:
LG André :15:
|