PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Excel so etwas wie Datenlogging machen



Import-Script
30.08.2002, 20:17
Hallo, ich habe folgendes Problem: <BR>In einem Excel-Sheet wird laufend ein Wert, der von einer anderen Anwendung &uuml;ber DDE reinkommt &#40;aus einer Steuerung&#41; automatisch aktualisiert. Ich hätte jetzt gern ein Protokoll &#40;in der gleichen Excel-Mappe&#41;, das die Änderungen dieser Werte auflistet. <BR>Wie kann ich nun zyklisch eine Funktion aufrufen, die den aktuellen Wert mit dem vorherigen vergleicht? Das &#34;Timer-Steuerelement&#34;, das es wohl bei Visual Basic geben soll, finde ich in dem Visual-Basic-Editor, der bei Office dabei ist, nicht.

Import-Script
30.08.2002, 20:47
Probier mal folgendes: <BR> <BR>Public Declare Function SetTimer Lib &#34;user32&#34; Alias &#34;SetTimer&#34; &#40;ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long&#41; As Long <BR> <BR>Private sub CmdStart_click&#40;&#41; <BR>dim i as long <BR>i = SetTimer&#40;Me.hwn,88,5000,AddressOf Test&#41; <BR>end sub <BR> <BR>sub Test&#40;&#41; <BR>&#39;Tu was <BR>end sub <BR> <BR>Ich hoffe nur mal, man hat den AddressOf Operator in VBS...

Import-Script
30.08.2002, 22:58
Danke, geht ganz prima! <BR>Musste es nur ein bisschen modifizieren, weil ich den Timer sonst nicht mehr richtig anhalten konnte. <BR>Das AddressOf ging erst, nachdem ich ein eigenes Modul angelegt hatte, also nicht innerhalb des Codes, der zur Tabelle gehört. <BR>Nun ja, von VB habe ich ansonsten null Ahnung, vielleicht m&uuml;sste ich mich mal näher damit beschäftigen.

Import-Script
30.08.2002, 23:08
Ah ja stimmt. Ich hatte ganz vergessen, das der AddressOf ja nur in Modulen geht. <BR> <BR>Ja und den Me.HWnd Fehler hast du bestimmt auch gefunden. <BR> <BR>Hauptsache es funzt jezt oder? <BR> <BR>Gruß Tobias

Import-Script
31.08.2002, 00:05
Hm, also das Me.HWnd habe ich nicht verstanden &#40;und ging auch nicht - erst habe ich this probiert, aber dann ging nachher trotzdem das KillTimer nicht. Vielleicht gilt die Tabelle nicht als Fenster?&#41;. Aber &uuml;ber SetTimer und KillTimer hatte ich woanders was stehen, und deshalb sehen meine Aufrufe jetzt so aus &#40;also i ist praktisch die Timer-ID&#41;: <BR> <BR>Private i As Long <BR> <BR>Public Sub StartLogging_Click&#40;&#41; <BR> i = SetTimer&#40;0, 88, 5000, AddressOf OnTimer&#41; <BR> Sheets&#40;&#34;Tabelle1&#34;&#41;.Range&#40;&#34;H10&#34;&#41; = &#34;active&#34; <BR>End Sub <BR> <BR>Public Sub StopLogging_Click&#40;&#41; <BR> Dim b As Boolean <BR> b = KillTimer&#40;0, i&#41; <BR> Sheets&#40;&#34;Tabelle1&#34;&#41;.Range&#40;&#34;H10&#34;&#41; = &#34;stopped&#34; <BR>End Sub <BR>

Import-Script
31.08.2002, 00:09
Wobei, this konnte eigentlich nicht gehen, weil es ja einmal auf die eine und einmal auf die andere Funktion zeigt. <BR> <BR>Aber wie du sagst: Hauptsache, es funzt jetzt. <BR>Also danke nochmal.