2016-04-15 10 views
1

Diese Codezeile wird nicht bewerten:Application.Eval() arbeitet nicht mit Ausdruck

If(StrComp(Left("Campaign", 5), "IMS :") = 0 

Ich verwende es wie folgt aus:

strHolder = "If(StrComp(Left("Campaign", 5), "IMS :") = 0" 
myVar = Application.Eval(strHolder) 

Dies ist der Fehler, den ich ‚m Aufnahme:

Run-time error '2425': 

The expression you entered has a function name that Microsoft Access can't find. 

Ich vermute, dass Application.Eval nicht lesen können entweder die If, StrComp oder Left

nicht sicher, was hier zu tun, und ich kann nicht viel in die Tiefe gehende Informationen über die Eval Methode finden.

Antwort

3

wird diese Code-Zeile auswerten nicht:

If(StrComp(Left("Campaign", 5), "IMS :") = 0 

Und es wäre auch nicht aufgrund unausgeglichener Klammern und If ohne Then kompiliert.

Es gibt auch einen Compiler-Fehler auf dieser Linie sein sollte ...

strHolder = "If(StrComp(Left("Campaign", 5), "IMS :") = 0" 

Wenn Sie so etwas wie dieses Direkt-Fenster Beispiel wollen ...

? StrComp(Left("Campaign", 5), "IMS :") = 0 
False 

... dann doppelt up die " Zeichen in der Zeichenfolge, die Sie an Eval() senden ...

strHolder = "StrComp(Left(""Campaign"", 5), ""IMS :"") = 0" 
? strHolder 
StrComp(Left("Campaign", 5), "IMS :") = 0 
myVar = Application.Eval(strHolder) 
? myVar 
0 
? CBool(myVar) 
False 
+0

Danke für die Antwort. Also .. ich habe schon eine Weile damit gespielt. Sie hatten recht viele Syntaxfehler, aber nicht alle. 1. Verdoppelung der Zitate funktionierte nicht - nicht sicher, warum, aber am Ende brauchte ich einfache Anführungszeichen. 2. Das Entfernen der if-Anweisung und das Bewerten auf eine bool-Variable war der Schlüssel zum Erfolg (ziemlich genau das, was Sie hier getan haben). Gibt es eine Syntax, um eine komplette IF-Anweisung korrekt aus einer Zeichenfolge auszuwerten? –

+0

Nicht sicher. Haben Sie ein Beispiel für eine vollständige "If" -Anweisung, die Sie mit 'Eval()' bewerten möchten? – HansUp

+0

'If (StrComp (Links (" Campaign ", 5)," IMS: ") Dann Return someValue 'Nicht sicher, wie das zu tun ist. –