Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
744to748
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
744to748
744to748
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

zeitlich kopieren

zeitlich kopieren
14.03.2006 14:35:50
Thomas
Hallo,
wie kann ich in excel eine bestimmte zelle alle 10 Minuten kopieren und eine Datenbank dadurch aufbauen. Z.b Kopiere von Zelle d7 alle 5 minuten den Wert nach d22, dann die nächsten 5 Minuten d23, usw abwärts.

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zeitlich kopieren
14.03.2006 17:04:26
IngGi
Hallo Thomas,
mit folgenden beiden Makros wird alle 5 Minuten der Wert aus Zelle A1 in die erste freie Zelle der Spalte B kopiert. Die erste Prozedur ruft mit einer Verzögerung von 5 Minuten die zweite Prozedur auf. Die zweite Prozedur kopiert den aktuellen Wert von A1 in die Spalte B und ruft anschließend sofort wieder die erste Prozedur auf, die wiederum mit einer Verzögerung von 5 Minuten wieder die zweite Prozedur aufruft............. usw.

Sub Daten_retten_Start()
Application.OnTime Now + TimeValue("00:05:00"), "Wert_retten"
End Sub

Sub Wert_retten()
Range("A1").Copy Destination:=Range("B65536").End(xlUp).Offset(1, 0)
Daten_retten_Start
End Sub
Gruß Ingolf
Anzeige
AW: zeitlich kopieren
14.03.2006 18:03:31
Thomas
Danke Ingolf, jedoch wenn das Program kopiert ist die Zeile 0, da die Zelle die das Program kopieren soll sich von einer anderen Zelle den Wert holt. Wie kann er nur den Wert kopieren und nicht die Formel.Danke.Zusätzlich wäre es schön wenn neben dem Wert auch noch die aktuelle Zeit steht, dann wäre es perfekt.
AW: zeitlich kopieren
14.03.2006 18:17:03
IngGi
Hallo Thomas,
so wird der Wert an Stelle der Formel kopiert. Aktuelle Zeit in Spalte C:

Sub Wert_retten()
Range("A1").Copy
Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range("B65536").End(xlUp).Offset(0, 1) = Now
Daten_retten_Start
End Sub
Gruß Ingolf
Anzeige
AW: zeitlich kopieren
14.03.2006 22:11:51
Thomas
Hallo nochmal,
wie kann ich das Makro zeitlich stoppen, z.B wenn z.B 22:00 dann keine Aufzeichnung mehr oder welcher Befehl stoppt das Makro generell.
AW: zeitlich kopieren
15.03.2006 01:06:37
IngGi
Hallo Thomas,
also generell kann man das Ganze einfach durch das Schließen der Datei stoppen. Wenn du die Datei offen halten möchtest oder aus irgendwelchen Gründen musst, könntest du den Ablauf durch eine kleine Abfrage stoppen. Mit einer bestimmten Endzeit (22 Uhr) z.B. so:

Sub Wert_retten()
If Time >= 22 / 24 Then
Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range("B65536").End(xlUp).Offset(0, 1) = Now
Daten_retten_Start
End If
End Sub
Oder du lässt stoppen, sobald der 100ste Wert in die Zelle B100 kopiert wurde:

Sub Wert_retten()
If Range("B100") = "" Then
Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range("B65536").End(xlUp).Offset(0, 1) = Now
Daten_retten_Start
End If
End Sub
Oder du lässt stoppen, wenn das Wort "Stop" in C1 steht:

Sub Wert_retten()
If Range("C1") <> "Stop" Then
Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range("B65536").End(xlUp).Offset(0, 1) = Now
Daten_retten_Start
End If
End Sub
Dabei gilt allerdings, dass, nachdem du "Stop" in C1 geschrieben hast, der Ablauf erst endet, wenn das Makro das nächste Mal versucht, einen Wert nach Spalte B zu kopieren. Und das kann eben lange 5 Minuten dauern. Zum sofortigen Stop schließt du daher am Besten kurz die Datei, speicherst sie wenn gewünscht und öffnest sie dann wieder.
Gruss Ingolf
Anzeige
AW: zeitlich kopieren
15.03.2006 15:23:19
Thomas
Ich hab noch ein paar Anfängerfragen.
Damit das makro auch so weiterläuft, habe ich gesehen , wenn ein anderes Blatt anklicke, es versucht dort weiterzumachen. Kann ich das Blatt fixieren, das es nur dort das Makro laufen lässt.Desweiteren der befehl Time 22 / 24. was bedeutet 24. Oder wie kann ich das makro z.b automatisch um 15.30 Uhr starten? Danke nochmals.
AW: zeitlich kopieren
16.03.2006 14:38:55
IngGi
Hallo Thomas,
so bezieht sich das Makro auf das Tabellenblatt "Daten" in der Datei "MeineDatei.xls":
Sub Wert_retten()
If Time >= 22 / 24 Then
With Workbooks("MeineDatei.xls").Sheets("Daten")
.Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
.Range("B65536").End(xlUp).Offset(0, 1) = Now
End With
Daten_retten_Start
End If
End Sub
Zu der Befehlszeile "If Time >= 22 / 24 Then". Zunächst muss es "=". Mein Fehler. Die 24 steht für die Anzahl Stunden eines Tages. Für Excel ist eine Uhrzeit ein Bruchteil von 1. 12 Uhr mittags ist dementsprechend 0,5, weil der halbe Tag vergangen ist. Somit ergibt sich 22 Uhr aus 22 geteilt durch 24.
Für einen automatischen Start der Makros um 15.30 Uhr kopiere die beiden bisherigen Makros in ein allgemeines Modul. Dazu gehst du mit Alt+F11 in den VBA-Editor und fügst mit Einfügen-Modul ein allgemeines Modul ein. Dieses neue Modul heißt automatisch Modul1, wenn es das erste allgemeine Modul in dieser Arbeitsmappe ist. Nun kommt noch folgendes Makro in das Modul der Arbeitsmappe. Dorthin kommst du mit einem Doppelklick auf "DieseArbeitsmappe".
Private Sub Workbook_Open()
Application.OnTime TimeValue("15:30:00"), Modul1.Wert_retten
End Sub
"Automatischer Start" ist dabei allerdings relativ. Voraussetzung ist nämlich, dass die Datei um 15.30 Uhr geöffnet ist.
Gruß Ingolf
Anzeige
AW: zeitlich kopieren
16.03.2006 15:27:31
Thomas
Danke soweit. Nur die Fixierung, das das makro nur die daten von diesem Sheet kopiert und ablegt funktioniert noch nicht. I habe dies getestet, indem ich mich in einem anderen Sheet befinde und dann kopiert er nicht, sondern versucht es in diesem Sheet wo ich mich befinde und kopiert daten von diesem Sheet.
AW: zeitlich kopieren
16.03.2006 15:56:03
IngGi
Hallo Thomas,
hast du vielleicht in diesen beiden Programmzeilen die Punkte vor "Range" übersehen?
      .Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
.Range("B65536").End(xlUp).Offset(0, 1) = Now
Gruß Ingolf
Anzeige
AW: zeitlich kopieren
16.03.2006 16:21:13
Thomas
Ich bekomme ein Laufzeitfehler wenn ich mich in einem anderen Sheet mich befinde.Ich habe etwas abgeändert, da ich Drei werte von A1:C1 nach unten kopiere.
Sub Wert_retten()
If Time kleiner 22 / 24 Then
With Workbooks("SpreadTwsDde.xls").Sheets("Daten")
.Range("A1").Copy
.Range("B65536").End(xlUp).offset(1, 0).PasteSpecial Paste:=xlPasteValues
.Range("B1").Copy
.Range("C65536").End(xlUp).offset(1, 0).PasteSpecial Paste:=xlPasteValues
.Range("D1").Copy
.Range("D65536").End(xlUp).offset(1, 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.Range("A1").Select
End With
Daten_Start
End If
Anzeige
AW: zeitlich kopieren
16.03.2006 16:36:39
IngGi
Hallo Thomas,
auf den ersten Blick läßt sich da kein Fehler finden. Möglicherweise findet er die Datei oder das Tabellenblatt nicht. Stimmen die Namen "SpreadTwsDde.xls" für die Datei bzw. "Daten" für das Tabellenblatt? Ansonsten, in welcher Programmzeile tritt denn der Laufzeitfehler auf? Klicke bei Auftreten des Fehlers auf "Debuggen". Dann ist die betreffende Programmzeile gelb hinterlegt.
Gruß Ingolf
AW: zeitlich kopieren
16.03.2006 16:53:19
Thomas
.Range("A1").Select - ist gelb.
AW: zeitlich kopieren
16.03.2006 17:52:51
IngGi
Hallo Thomas,
Select kannst du nur auf dem aktiven Tabellenblatt ausführen, daher:
If Time 
Gruß Ingolf
Anzeige
AW: zeitlich kopieren
17.03.2006 09:25:16
Thomas
Es klappt. Vielen Dank nochmals.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige