ich steh vor einem Rätsel...
Über einen DDE-Server wird ein Ventilöffnungswert abgefragt. Der Befehl dazu heißt DDERequest(channelNumber2, "P(8)").
Diese Werte kann ich ohne vorherige Deklaration mit
Cells(n + 1, 17) = DDERequest(channelNumber1, "P(8)") in die Tabelle eintragen lassen, dort stehen sie dann als Zahlen (ganzzahlige Werte zw 0 und 32000).
auch geht ohne Deklaration
dde1R = DDERequest(channelNumber1, "P(8)")
Cells(n + 1, 17) = dde1R
wenn ich nun ohne Deklaration versuche im Macro mit der Zahl zu rechnen erscheint Fehler 13 Typen unverträglich.
Cells(n + 1, 17) = DDERequest(channelNumber1, "P(8)") * 10
oder
dde1R = DDERequest(channelNumber1, "P(8)")
Cells(n + 1, 17) = dde1R * 10
Eigentlich will ich nicht mit 10 multiplizieren sondern mit einer handvoll anderer Variablen, dachte anfangs das liegt an der Deklaration der anderen Variablen, nun kann aber nicht einmal die *10 ausgeführt werden.
Wenn ich die Variable DDERequest(channelNumber2, "P(8)") oder dde1R nicht definiere macht VBA automatisch Variant daraus. Zumindest steht das im Lokalfenster oder bei TypeName-Abfrage.
Jedoch ändert sich an der Typenunverträglichkeit nichts wenn ich die Variablen deklarierte egal ob Variant oder Double oder die anderen
Dim DDERequest(channelNumber2, "P(8)") As Single 'Double Integer Long String Variant
oder
Dim DDER As Single 'Double Integer Long String Variant
Bei As Variant erscheint im Lokalfenster der Wert und dass die VAriable Variant/Double sei.
Auch bei dde1Rdbl = CDbl(dde1R) 'Umwandlung Double erscheint der Fehler
Gibt es noch eine Variablen-Deklaration, die ich vergessen habe? Oder sonst eine Möglichkeit die Typenunverträglichkeit zu eliminieren?
Ich will/kann eigentlich nicht den Wert in eine Hilfszelle in der Tabelle schreiben und danach die weiteren Berechnungen in der Tabelle durchführen... und/oder den Wert wieder in das Macro zurücklesen...
Dieses hin und her schreiben und lesen raubt meinen Laptop (400Mhz, 128MB) zuviel Resourcen, um alle 200ms einen Wert über die CPU-intensive DDE-Server-Verbindung zu protokollieren.
Danke und Viele Grüße
Michael