Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

eine Zahl in der Zeile automatisch hochzählen
#1
Hallo zusammen.

Eure Hilfe ist wieder mal gefragt  Angel

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  Angel

viele Grüße
Andre
Antwortento top
#2
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-2016)
Antwortento top
#3
Hallo Andre,

vielen Dank für schnelle Antwort, aber das ist glaube ich nicht ganz was ich brauche oder verstehe ich was falsch  Angel

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  Angel

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  Blush

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  Blush

Viele Grüße
Andre
Antwortento top
#4
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-2016)
Antwortento top
#5
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 Blush

Viele Grüße
Andre
Antwortento top
#6
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-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
  • Andrek
Antwortento top
#7
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!  Blush

Vielen herzlichen Dank   98

Liebe Grüße
Andre
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste