Clever-Excel-Forum

Normale Version: Makro in Endlosschleife zum Kopieren eine Zeile
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen :)
ich hab ne kleine Frage und hoffe das mir hier jmd weiterhelfen kann.
Ich habe mir ein Makro erstellt das eine Zeile (dessen inhalt sich ständig neu berechnet) kopiert (A1:K1) und in die nächste frei Zeile einfügt,
jetzt wäre meine Frage ob es möglich ist das Makro so umzuschreiben das es in Endlosschleife zu jeder vollen Stunde automatisch die Zeile Kopiert und diese in die nächste freie Zeile einfügt.
Bräuchte diese Stündlichen Daten um mir einen Überblick über den Verlauf zu verschaffen.
Mein aktuelles Makro sieht aktuell so aus (warscheinlich werden jetzt einige die hände über den Kopf zusammenschlagen ;) ) :
Code:
Public Sub Kopieren()

Dim WkSh_Q  As Worksheet
Dim WkSh_Z  As Worksheet

   Set WkSh_Q = ThisWorkbook.Worksheets("Tabelle1")
   Set WkSh_Z = ThisWorkbook.Worksheets("Tabelle1")
  
   WkSh_Q.Range("A1:K1").Copy
   WkSh_Z.Range("A" & WkSh_Z.Cells(WkSh_Z.Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial _
   Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
   Application.CutCopyMode = False

End Sub
ich bin für jeden vorschlag dankbar
Schon mal Danke im voraus
Hallöchen,

schaue Dir dafür mal Application.OnTime an Smile
(17.01.2020, 14:27)schauan schrieb: [ -> ]Hallöchen,

schaue Dir dafür mal Application.OnTime an Smile
Erst mal danke für den Tip:)
Wie müsste den das ganze aufgebaut sein?
Wenn ich z.b. für jede std vom 00:00:00 bis 23:00:00 diesen code schreibe
Code:
Application.OnTime When:="15:00:00", Name:="Kopieren"
 funktioniert das nicht da er mir dann im VBA  bei When:=" den Fehler unbekanntes Argument anzeigt
ausserdem hab ich keine ahnung ob er das dann nur heute um 15:00:00 macht oder auch morgen übermorgen usw.
Hallo,

Wenn ich das richtig verstehe gibst du zur aktualisierung 15Std an. Ich teste jetzt aber auch seit einer Stunde:


Zitat:
Option Explicit
Public Sub StartZeitGeber()
Application.OnTime Now + TimeValue("0:0:03"), "Kopieren"
End Sub



Zitat:Private Sub Kopieren()

Dim WkSh_Q  As Worksheet
Dim WkSh_Z  As Worksheet

  Set WkSh_Q = ThisWorkbook.Worksheets("Tabelle1")
  Set WkSh_Z = ThisWorkbook.Worksheets("Tabelle1")
 
  WkSh_Q.Range("A1:K1").Copy
  WkSh_Z.Range("A" & WkSh_Z.Cells(WkSh_Z.Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial _
  Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  Application.CutCopyMode = False

End Sub

Beides in einem Modul. Das klappt nur, wenn ich einen Schalter zum Aktualisieren einsetze. Hier sollte eigentlich alle 3 Sekunden aktualisiert werden, damit ich schneller testen kann. Klappt bei mir nicht. Jetzt mache ich aber Feierabend. Irgendwann ist es einfach zu viel Input.

Gruß
Marcus
Hallöchen,

näheres zum Thema erfahrt Ihr u.a. bei Microsoft
excel.application.ontime

oder dort:
Online - Excel: Application.OnTime

bzw. in der sensitiven Hilfe Smile

[attachment=28976]

Wie dort zu sehen ist, gibt es EarliestTime und nicht When usw.


Marcus, um das Kopieren zu wiederholen, müsstest Du am Ende vom Kopiermakro auch nochmal den OnTime-Aufruf einfügen, damit es sich selbst wieder aufruft. Ansonsten ist nach einmaliger Ausführung Schluss.

Wir hatten vor ein paar Tagen auch schon mal eine Diskussion über OnTime, eventuell geht Ihr mal über die Suche und schaut Euch das an.


Unabhängig davon mal noch der Hinweis, dass Excel dann natürlich offen bleiben muss.
Man könnte auch über die Aufgabenplanung und ein entsprechendes Script Excel jede Stunde starten, aktualisieren, speichern und wieder schließen. Mit einer geschlossenen Datei gewinnt man aber keine Überblick :21: :22:
Hallo André,

danke Dir ... mein Rechner hat sich dadurch aufgehangen. Klappt! So etwas würde ich aber nicht empfehlen. Dann würde ich lieber einen Schalter einbauen, damit ich die Daten rein hole.

Gruß
Marcus
Hallo Squal87,

(17.01.2020, 13:57)Squal87 schrieb: [ -> ]Ich habe mir ein Makro erstellt das eine Zeile (dessen inhalt sich ständig neu berechnet) ...

in welchen zeitlichen Abständen findet denn diese ständige Neuberechnung statt?

Gruß Uwe
(17.01.2020, 17:45)Kuwer schrieb: [ -> ]Hallo Squal87,


in welchen zeitlichen Abständen findet denn diese ständige Neuberechnung statt?

Gruß Uwe
Hallo Uwe,
die ausgegebenen Daten ändern sich alle 30sec und kommen von einem Excel Krypto Traiding Bot der 24/7 auf einem gemieteten Server läuft.

Zur Optimierung von dem Bot bräuchte ich die Daten für einen Langzeitwert d.h. in regelmäßigen und gleichbleibenden Abständen über einen längeren Zeitraum.

Geplant wäre gewesen das der Stand der Daten zu jeder vollen Std Automatisch in eine Liste Kopiert wird.
Ich bin mittlerweile so weit das das ganze mit einem Klick per Hand auf nen Butten funktioniert allerdings kann ich nicht 24/7 vorm PC sitzen und jede volle Std klicken 
Deswegen wäre es optimal wenn das ganze automatisiert funktionieren würde

Gruß Klaus
Hallo Klaus,

teste mal so:
Füge den Code in das schon vorhandene VBA-Modul des entsprechenden Tabellenblatts (Rechtsklick auf den Reiter -> Code anzeigen) ein.
Private Sub Worksheet_Calculate()
Static datCalc As Date
If (Now - datCalc) * 24 >= 1 Then
datCalc = Now
Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 11).Value = Range("A1:K1").Value
End If
End Sub
Gruß Uwe
(18.01.2020, 00:52)Kuwer schrieb: [ -> ]Hallo Klaus,

teste mal so:
Füge den Code in das schon vorhandene VBA-Modul des entsprechenden Tabellenblatts (Rechtsklick auf den Reiter -> Code anzeigen) ein
Hallo Uwe,
danke für den Code, hab ihn gestern mal laufen lassen.
So wie es aussieht funktioniert der Code (fast) wie geplant.
Er kopiert die Daten 5 min nach der vollen std, keine ahnung wieso er das nicht genau zur vollen std macht aber die 5 min Zeitverzögerung fallen nicht ins Gewicht.
Ausserdem hab ich eine Textdatei die zwichen Stopped und Running wechselt je nachdem ob oder bot läuft oder nicht, bei dieser Zelle zeigts mir beim automatischen kopieren NV# wenn ich das ganze manuell per hand kopiere (Butten) zeigt er es ganz normal an.