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.

Makro in Endlosschleife zum Kopieren eine Zeile
#1
Brick 
Hallo zusammenSmile
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
Antwortento top
#2
Hallöchen,

schaue Dir dafür mal Application.OnTime an Smile
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#3
(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.
Antwortento top
#4
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

Ich arbeite mit Excel 2003 - Excel 2007 - Excel 365

Homepage im Aufbau (alte Daten müssen wieder hergestellt werden): http://ms-excel.eu

Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.

Antwortento top
#5
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

   

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
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#6
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

Ich arbeite mit Excel 2003 - Excel 2007 - Excel 365

Homepage im Aufbau (alte Daten müssen wieder hergestellt werden): http://ms-excel.eu

Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.

Antwortento top
#7
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
Antwortento top
#8
(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
Antwortento top
#9
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
Antwortento top
#10
(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.
Antwortento top


Gehe zu:


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