ich bekomme über eine DDE Schnittstelle ständig sich ändernde Werte in eine Zelle (z.B. in Zelle D6) geschrieben.
Ich möchte nun regelmäßig (z.B. alle 60 Minuten) diesen Wert aus Zelle D6 in eine andere Zelle (z.B. A1) auslesen bzw. kopieren. Der nächste Wert soll nach 120 Minuten in die Zelle darunter geschrieben werden, also in Zelle A2. Der nächste Wert soll nach 180 Minuten in die Zelle darunter geschrieben werden, also in Zelle A3 und so weiter.
Ist das mit Excel möglich ? Wäre über Antworten sehr dankbar.
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Zur Zeit benutze ich noch Ecxel 2010. Diese Application.OnTime Methode ist erst ab Office 2013 machbar. Allerdings liegt Office 365 schon auf dem Schreibtisch. - muss nur noch installiert werden ;)
Vielleicht könnte jemand noch etwas dazu schreiben, wie ich die eigentliche Procedure dann hinbekomme. Also wie ich den Wert aus Zelle D6 regelmäßig (mit der Application.OnTime Methode) in die Zellen A1,A2,A3 usw. untereinander geschrieben bekomme. Ich möchte die Werte dann in einem Diagramm darstellen.
Ich weiß nun leider immer noch nicht, wie ich die Werte aus Zelle D6 in regelmäßigen Abständen in die Zeilen A1, A2, A3, A4 usw. geschrieben bekomme. Hat jemand dazu eine Idee ?
11.08.2017, 00:09 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2017, 00:10 von Ego.)
Hallo Ron,
hier einmal ein Beispiel:
Code:
Option Explicit
Sub Starte() Dim lngZeile As Long Dim blnWeiter As Boolean Dim datWann As Date Dim datWiederholung As Date blnWeiter = ThisWorkbook.Names("Weiter").RefersToRange.Value If blnWeiter Then datWann = ThisWorkbook.Names("Wann").RefersToRange.Value datWiederholung = ThisWorkbook.Names("Wiederholung").RefersToRange.Value If Now() > datWann - TimeValue("0:0:1") Then Call Machs datWann = datWann + datWiederholung While datWann < Now() datWann = datWann + datWiederholung Wend ThisWorkbook.Names("Wann").RefersToRange.Value = datWann Application.OnTime datWann, "Starte" Else On Error Resume Next Application.OnTime datWann, "Starte", , False Application.OnTime datWann, "Starte"
End If End If End Sub
Sub Stoppe() Dim datWann As Date datWann = ThisWorkbook.Names("Wann").RefersToRange.Value On Error Resume Next Application.OnTime datWann, "Starte", , False End Sub
Sub Machs() Dim lngZeile As Long lngZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(lngZeile, 1).Value = Cells(6, 4) Cells(lngZeile, 2).Value = Now() End Sub
und einige Bemerkungen: 1) Das Programm "Machs" kannst du frei gestalten. 2) Für die Progamme werden 3 benannte Zellen in der Arbeitsmappe benötigt: "Weiter", "Wann" und "Wiederholung". 3) Du kannst den Zyklus beenden über "Stoppe" oder indem du in die Zelle "Weiter" "falsch" einträgst.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.