Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1524to1528
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
Inhaltsverzeichnis

Loop Schlaufe

Loop Schlaufe
17.11.2016 20:12:37
Kurt
Guten Tag
Kann mir jemand sagen warum der ActiveCell = Now Wert nur bei der ersten Schlaufe ins Feld eingetragen wird, bei den weiteren durchgängen wird nur noch der v1 Wert eingetragen? Das Makro starte ich mit einem Button über das "log()"

Public Sub StartZeitGeber()
Application.OnTime Now + TimeValue("0:0:10"), "log"
End Sub

Sub StoppZeitGeber()
Application.OnTime Now + TimeValue("0:0:2"), "log", Schedule:=False
End Sub
Public Sub log()
Dim v1 As String
Range("A4").Select
v1 = ActiveCell.Value
Do Until ActiveCell.Value = ""
If ActiveCell.Value > 1 Then
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell = v1
ActiveCell.Offset(0, 1).Select
ActiveCell = Now
StartZeitGeber
End Sub


10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Loop Schlaufe
18.11.2016 07:43:50
MCO
Moin!
Erstmal ist es "unkorrekt" und vieleicht sogar fehlerhaft, eine zelle als String, also TEXT zu dimensionieren, dann aber .value >1 zu vergleichen, also dann doch mit Werten zu vergleichen.
Dann ist es schlecht, aber einem Anfänger durchaus zu verzeihen, dass immer mit Activecell und select gearbeitet wird.
Nachfolgenden hab ich mal versucht, es etwas besser darzustellen, wobei ich wahrscheinlich vom VBA-Profi noch etwas weg bin...
Public Sub log()
Dim cl As Range
Set cl = Range("A4")
v1 = cl.Value 'Wozu?
Do Until cl = ""
'If ActiveCell.Value > 1 Then ' überflüssig, wert wird vorher schon auf nichtleer  _
abgefragt
Set cl = cl.Offset(1, 0) 'range neu festlegen
Loop
cl = Split(Now, " ")(1)
StartZeitGeber
End Sub

Public Sub StartZeitGeber()
Application.OnTime Now + TimeValue("00:00:05"), "log"
End Sub
Sub StoppZeitGeber()
Application.OnTime Now + TimeValue("00:00:02"), "log", Schedule:=False
End Sub Gruß, MCO
Anzeige
AW: Loop Schlaufe
18.11.2016 09:26:25
Kurt
Guten Morgen MCO
Besten Dank für den Vorschlag was Zeit anbelangt, aber so kann ich den Code nicht einsetzen. Muss vielleicht etwas mehr ausholen. Ich habe eine SPS die mir den aktuelle Wert laufend in Zelle A4 einfügt. Ich möchte diese Werte(mit Application.OnTime) in Spalte A fortlaufend unter A4 eintragen, deshalb diese v1. Was dann eben nicht funktioniert, was ich eben gefragt habe ist, ich möchte nach jedem kopieren des Werts von A4 in der Zelle nebenan die aktuelle Zeit eintragen.
Vielleicht hat mir ja jemand einen besseren Vorschlag für mein Ziel. Ich möchte mit dem Wert der SPS ein Echtzeit-Diagramm erstellen (Stromverbrauch unseres Hauses).
dankend Kurt
Anzeige
Variante
19.11.2016 16:16:27
Michael
Hi,
ich empfehle den im Code genannten Link.
Das scheint wie gewünscht zu funktionieren:
Option Explicit
'Quelle u.a.
'www.online-excel.de/excel/singsel_vba.php?f=133
Dim z&
Dim iTimerSet As Double
Sub log()
Range("A" & z).Value = Range("A4").Value
Range("B" & z).Value = Now
z = z + 1
iTimerSet = Now + TimeValue("00:00:10")
zeitsprung
End Sub
Sub StartZeitGeber()
z = 5
' z = Range("A" & Rows.Count).End(xlUp).Row
iTimerSet = Now + TimeValue("00:00:10")
zeitsprung
End Sub
Sub zeitsprung()
Application.OnTime iTimerSet, "log"
End Sub
Sub StoppZeitGeber()
Application.OnTime iTimerSet, "log", , False
End Sub

Die Zeilennummer für die Ausgabe wird einmal initialisiert und dann schlicht weitergezählt.
Ersatzweise könnte man statt z=5 einmalig die unterste, vorhandene Zeile ermitteln (oben auskommentiert).
Allerdings würde ich ernsthaft überdenken, ob 10-Sekunden-Schritte angebracht sind: das sind pro Tag über 8000 Werte: wer soll die, bitte, auswerten?
Oder so: hast Du einen Bildschirm mit 8000 Pixeln horizontal, damit Du 8000 Werte in einem Diagramm siehst?
Gruß,
Michael
Anzeige
AW: Variante
19.11.2016 19:28:40
Kurt
N'Abend
Super, genau so passt es mir und funktioniert auch einwandfrei. Das mit den 10-Sekunden-Schritte ist nur ein Beispiel, es geht nur ums Prinzip.
Merci für die Hilfe
Gruss Kurt
kleine Korrektur
20.11.2016 16:55:53
Michael
Hallo Kurt,
freut mich, wenn es läuft.
Ich seh grad: wenn Du die auskommentierte Variante mit automatischer Zeilenermittlung nimmst, mußt Du bitte noch 1 dazuzählen, sonst wird die unterste, vorhandene Zeile überschrieben...
Ansonsten happy exceling & Gruß,
Michael
AW: kleine Korrektur
21.11.2016 12:02:03
Kurt
Guten Tag Michael
Dieses Detail habe ich noch gar nicht bemerkt :-), Merci.
Hast du vielleicht eine Idee wie ich den Zeitinterwall über eine Zelle in der Tabelle beeinflussen kann. Will heissen z.B. now plus 5 Sekunden oder wie viel ich dann eben loggen möchte? Die betroffene Zelle ist Zelle J3 und welches Format muss ich in der Zelle nehmen?
FG Kurt
Anzeige
kommt drauf an
21.11.2016 14:42:55
Michael
Hallo Kurt,
das ist immer etwas Gefummel.
Im Grunde kommt es darauf an, was Du haben willst: eine komplette Zeitangabe ("hh:mm:ss"), nur einen Sekundenwert oder wie auch immer.
Das Simpelste ist, timevalue("00:00:03") durch einen "Date"-Datentyp zu ersetzen: dadurch spart man sich eben diese Konvertierung:
Option Explicit
'Quelle u.a.
'www.online-excel.de/excel/singsel_vba.php?f=133
Dim z&
Dim iTimerSet As Double, tDelta As Date
Sub log()
Range("A" & z).Value = Range("A4").Value
Range("B" & z).Value = Now
z = z + 1
' iTimerSet = Now + TimeValue("00:00:10")
iTimerSet = Now + tDelta
zeitsprung
End Sub
Sub StartZeitGeber()
' z = 5
tDelta = Range("J3").Value
z = Range("A" & Rows.Count).End(xlUp).Row + 1
' iTimerSet = Now + TimeValue("00:00:10")
iTimerSet = Now + tDelta
zeitsprung
End Sub
Sub zeitsprung()
Application.OnTime iTimerSet, "log"
End Sub
Sub StoppZeitGeber()
Application.OnTime iTimerSet, "log", , False
End Sub

In J3 gibst Du dann eine "gültige" Excel-Zeit ein, etwa 00:01:00, wobei Excel diese automatisch als Zeit *formatiert*, d.h. es wird angezeigt wie angegeben, erhält aber intern den Typ "date", also eine Dezimalzahl, die sich problemlos addieren läßt.
Schöne Grüße,
Michael
Anzeige
AW: kommt drauf an
21.11.2016 17:14:13
Kurt
@
Sehr gut, funktioniert einwandfrei mit dem Intervall. Mit dem dynamischen Diagramm habe ich eine schöne Darstellung wo ich gewünschte Werte ab der SPS live anzeigen kann, so macht es Freude.
FG Kurt
Sehr erfreulich!
21.11.2016 17:21:56
Michael
Hallo Kurt,
dann wünsche ich weiterhin
happy exceling,
Michael
AW: Loop Schlaufe
19.11.2016 08:17:12
Kurt
Leider habe ich vergessen anzuhäkeln das meine Frage noch nicht ganz beantwortet wurde. Bin noch Neuling hier :-).

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige