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, 20: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:
|