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.

Zellwert auslesen
#1
Guten Abend,

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.
Antworten Top
#2
Hallo Ron,

Ja. Mit der Methode "Application.OnTime".
https://msdn.microsoft.com/de-de/library...96165.aspx
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.





Antworten Top
#3
Vielen Dank Helmut :)

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. 

Wünsche Euch allen einen schönen Tag :) 
Antworten Top
#4
Moin!
Application.OnTime gibt schon seit anno dunnemals.
(Man muss den aktuellen MS-Seiten nicht alles glauben)

Ein recht gutes Tutorial findest Du hier:
http://www.online-excel.de/excel/singsel_vba.php?f=133

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Supi :)

Teil 1 meiner Frage ist ja damit geklärt. 

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 ?

Kenne mich mit VBA leider gar nicht aus..
Antworten Top
#6
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.


Angehängte Dateien
.xlsm   ontime.xlsm (Größe: 24,3 KB / Downloads: 1)
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.





Antworten Top
#7
Herzlichen Dank Helmut  :28:

Ich werde das am Wochenende ausprobieren :)
Antworten Top
#8
Ein querytabele hat ein beforeupdate und ein afterupdate event.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#9
Vielen Dank - Ihr habt mir bis jetzt sehr geholfen  :28:
Antworten Top


Gehe zu:


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