Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
664to668
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
664to668
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler 13 - Typen unverträglich

Fehler 13 - Typen unverträglich
10.09.2005 10:15:16
michael
Hallo,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler 13 - Typen unverträglich
10.09.2005 10:44:05
Ralf
Hallo Michael,
schreib ganz oben in Dein Modul 'Option Explicit'. Dann meckert Dir VB von allein an welche Variable nicht deklariert wurde.
Ciao, Ralf
AW: Fehler 13 - Typen unverträglich
10.09.2005 11:06:35
michael
Hallo Ralf,
danke für die Antwort.
Das 'Option Explicit' hab ich bereits (hatte ich nur beim ersten Test "Diese Werte kann ich ohne vorherige Deklaration mit..." deaktiviert. Damit ich sehe was VBA ohne mein Zutun daraus macht.
Ansosnsten hab ich alle Variablen deklariert - nur VBA meint die Deklaration ist Typen unverträglich, selbst wenn ich den beschriebenen Wert versuche nur mit 10 zu multiplizieren - selbst als Variant oder Double ...
Grüße
Michael
Anzeige
AW: Fehler 13 - Typen unverträglich
10.09.2005 11:19:23
Ramses
Hallo
schau doch mal was tatsächlich zurückkommt
dde1R = DDERequest(channelNumber1, "P(8)")
Debug.Print ddd1R
Cells(n + 1, 17) = dde1R * 10
Wenn im Ausgabewert ein Komma !!! ist, hast du deinen Fehler.
VBA erwartet z.B. als Dezimaltrennzeichen einen Punkt.
Da hilft die ganze Typ-Umwandlung nichts.
Gruss Rainer
AW: Fehler 13 - Typen unverträglich
10.09.2005 11:47:15
michael
Hallo Rainer,
danke für die Antwort.
Kann deinen Vorschlag erst wieder am Mo testen.
Gehe aber davon aus, dass es kein Dezimal-Problem als Komma od Punkt ist, da der DDE-Server nur ganzzahlige Werte zw 0 und 32000 einliest oder zurück gibt.
Danke und Gruß
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige