2017-02-24 10 views
1

Ich baue eine Anwendung, die eine Reihe von Anweisungen interpretieren muss, die vom Benutzer festgelegt wurden, Anweisungen, die erst zur Laufzeit bekannt werden.Auswerten größer als x aber kleiner als x VBA

ich dies zu erreichen, durch die Funktion auswerten verwenden, wie so:

Evaluate("5>4") 

Welche True zurückgibt, als man erwarten würde. Meine Frage ist, wie bewerte ich die folgende Aussage:

5 größer als 4, aber weniger als 10

Ich werde die Zahlen mit Variablen, natürlich wird ersetzt.

Ich weiß, ich könnte die Zeichenfolge in ein Array von zwei Teilen teilen und einzeln testen, aber es muss eine Möglichkeit geben, ein einzelnes Argument zum Testen zu übergeben.

+0

dies vielleicht wie? 'Evaluate (" 10> 5> 4 ")' – gizlmo

+0

Das funktioniert nicht, weil Evaluate ("10> 10> 4") auch True liefert –

+0

Ich bin mir sicher, dass es einen Grund gibt, warum du den Operator and nicht benutzen kannst, kann ich fragen, was es ist? – User632716

Antwort

2

Application.Evaluate wertet Formeln so AND(5>A4,5<10) oder (5>A4)*(5<10) (Ergebnisse in 0 oder 1)

Eine weitere Alternative ScriptControl Eval sein könnte, aber es kann nicht Adressen zugreifen Excel wie Evaluate

With CreateObject("ScriptControl") 
    .Language = "VBScript"    ' either VBScript or JScript 
    Debug.Print .Eval("5>4 and 5<10") 
End With 
+0

Erstaunlich. Wusste nicht über den SC –

Verwandte Themen