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

Messdaten Protokoll, Log, DDE

Messdaten Protokoll, Log, DDE
16.08.2005 16:21:15
Christian
Hallo Leute,
es gibt hier ein, für mich, hartnäckiges Problem.
Eventuell reichen schon der ein oder andere Tip.
ansonsten wird ein fähiger VBA Programmierer gesucht(gegen Bezahlung).
Ausgangslage:
Es werden Messdaten mittels Funktion in die erste Zeile des Excelblattes eingelesen.
Die erste Zeile sieht dann ca so aus:
TriggerMesswert1: TriggerMesswert2: Messwert1: Messwert2 usw.
234 234 22 22
Jedes Mal wenn sich TriggerMesswert1 oder 2 ändert sollen die Werte der ersten Zeile in die nächste, freie Zeile kopiert werden.
Ausserdem soll Excel eine laufende Nummer und die aktuelle Uhrzeit (hh:mm:ss) in die Felder davor setzen.
Das Ergebnis sollte dann ca. so aussehen wie in angehängtem Excelblatt.
https://www.herber.de/bbs/user/25692.xls
Soweit kriege ich es als VBA Änfänger auch noch hin.
Das KernProblem ist das die Zellen über DDE mit Messdaten einer anderen Anwendung gefüttert werden.
Excel erkennt die WerteÄnderung nicht. Worksheet_Change ist also nicht verwendbar.
Dann wollte ich eine While Schleife einbauen ala

Sub Check()
Cell_11 = Cells(2,2)
Found = False
While (Found = False)
If (Cells(2,2) <> cell_11) then Found = true
'Found = False ..ohne diesen Zusatz hängt sich der code auf
Wend
Cells(5,1) = "neuer wert:"
Cells(5,2) = Cells(2,2)
End Sub

(Kollege war so nett das in VBA zu formulieren.)
Das Problem hierbei:
solange die Schleife läuft werden die Messwerte nicht aktualisiert
und der CPU läuft auf Vollast.
Dann sollte die Schleife mit Sleep(xxx) zum pausieren geschickt werden:
geht auch nicht*AAAHHHGGR*
Hilfe!
Grüße aus Hamburg
Christian

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Messdaten Protokoll, Log, DDE
16.08.2005 16:45:18
Tinu
Hallo Christian
nur so ne Idee: Wie wär's wenn Du die IF-Abfrage über eine Timer alle paar Sekunden einmal startest?
Gruss
Tinu
AW: Messdaten Protokoll, Log, DDE
16.08.2005 16:51:03
teraflop
hallo
ich mach das so:
ich lese den DDE in excel in eine zelle ein.
dann kopiere ich in einem zeitintervall x den wert in eine andere zelle.
nun vergleiche ich den cell value indem ich ein loop über die beiden zellen lasse.
während der DDE die erste zelle wieder ändert.
If activecell.Offset(0, 0).Value activecell.Offset(0, 1).Value Then
zB. activate deine zelle und kopiere die wohin du willst und lese noch eine zeit dazu ein.
diese,meine variante ist allerdings nur so dynamisch wie der zeitintervall x.
ich weiss nicht, ob dir das genügt.
gruss teraflop
Anzeige
AW: Messdaten Protokoll, Log, DDE
16.08.2005 17:12:38
Christian
Hallo Tinu, hallo Teraflop,
danke euch fuer die Blitzantworten!
@ Tinu, mit dem Timer ist nur ein 1 Sek Timing zu machen, oder?
Das ist etwas wenig. 20-100ms wären toll
@ Teraflop, Nimmst du dafür auch den Timer?
Grüße Christian
AW: Messdaten Protokoll, Log, DDE
16.08.2005 17:17:40
Fred
Hi,
mit API:
Private Declare Function GetTickCount& Lib "kernel32" ()
mfg Fred
AW: Messdaten Protokoll, Log, DDE
16.08.2005 17:34:24
teraflop
ja.mit timer. aber meine intervalle sind im über ein sekunden bereich.
aber wichtig. wenn du störungen im DDE einlesen hast, lese den wert vom DDE input zuerst in eine 2. zelle kopiere ihn in eine dritte und vergleiche 2.zelle 3.zelle mit loop
dann kann der DDE input "reinbabbeln" so lange er will.
gruss teraflop
Anzeige
AW: Messdaten Protokoll, Log, DDE
16.08.2005 17:48:14
Thomas
Hallo Christian,
Du kannst es auch mal dem Calculate- oder Change-Event versuchen. Mit einem RTD-Server und Calculate läuft es bei mir einwandfrei.
Beispielcode ...


Option Explicit
'Schreibt die Werte aus B2 in Spalte A
Private Sub Worksheet_Calculate()
    If Not Intersect(Cells(Rows.Count, 1).End(xlUp), Range("A1")) Is Nothing And Range("A1") = "" Then
        Range("A1") = Range("B2")
    Else
        Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = Range("B2")
    End If
End Sub


Gruss
Thomas
Risi Thomas Softwareentwicklung
Addins - Datenbanklösungen - Komponenten - RTDServer

Anzeige
AW: Messdaten Protokoll, Log, DDE
16.08.2005 18:05:24
Christian
Hey das macht richtig Spass mit euch!
Da meine Kenntnisse in VBA gering sind bzw. gegen Null tendieren
Und ich für die Umsetzung wahrscheinlich wesentlich länger brauche als jemand von euch
(learing by doing, trail and error)
Und das eigentlich nur so eine (kleine *AAhh*) Nebenaufgabe ist. Ohne die es leider nicht geht:
Hat jemand von euch Lust das umzusetzen? (gegen Entgeld natürlich?)
Da würd ich mich echt freuen.
Denn ich tüddel mit dem Ding hier schon einige Zeit rum.
Mir fehlt einfach die Fähigkeit mich in VBA auszudrücken.
(Email: task2@gmx.de)
Grüße Christian
Anzeige
AW: Messdaten Protokoll, Log, DDE
16.08.2005 19:11:48
Thomas
Hab Dir 'ne Mail geschrieben ...
Gruss
Thomas
Risi Thomas Softwareentwicklung
Addins - Datenbanklösungen - Komponenten - RTDServer

AW: Messdaten Protokoll, Log, DDE
16.08.2005 18:32:47
teraflop
kleine frage an thomas risi
wo kann ich etwas über den RTD server nachlesen?
ich habe eine problem. eine komplexe berechnung in excel mit solver läuft nur auf den 2. start (manuell)schnell,nicht gleich beim ersten? warum
und mit timer gestartet geht's immer langsam!
wo bekomme ich hier hilfe?
gruss teraflop
Anzeige
AW: Messdaten Protokoll, Log, DDE
16.08.2005 19:14:40
Thomas
&gt wo kann ich etwas über den RTD server nachlesen?
Also, wenn Du ein Buch meinst, dann kenne ich keines. Im www mal nach 'msdn excel rtd' googlen, dann sollte sich etwas finden lassen. Oder das was in der Hilfe steht.
Gruss
Thomas
Risi Thomas Softwareentwicklung
Addins - Datenbanklösungen - Komponenten - RTDServer

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige