如何在VBA中使用方括号进行字符串求值?

如何在VBA中使用方括号进行字符串求值?,vba,excel,eval,Vba,Excel,Eval,使用方括号进行字符串求值,我试图使[inputString]返回320。 有什么办法吗 Public Sub TestMe() Dim inputString As String inputString = "20+300" Debug.Print Application.Evaluate(inputString) 'ok Debug.Print Evaluate([inputString]) 'ok Debug.Print

使用方括号进行字符串求值,我试图使
[inputString]
返回
320
。 有什么办法吗

Public Sub TestMe()

    Dim inputString As String
    inputString = "20+300"
    Debug.Print Application.Evaluate(inputString)   'ok
    Debug.Print Evaluate([inputString])             'ok
    Debug.Print [20+300]                            'ok
    Debug.Print ["20"+"300"]                        'ok
    Debug.Print ["20"+300]                          'ok
    Debug.Print [inputString]                       'returns "20+300" and not 320

End Sub
From:“使用方括号(例如,“[A1:C5]”)与使用字符串参数调用Evaluate方法相同。”

我认为这意味着:

Evaluate(“20+10”)
相当于
[20+10]
,其中Evaluate函数在求值之前获取字符串并转换为文字解释

但是
[“20+10”]
只相当于计算字符串
“20+10”


Debug.Print[“20”+“300”]
之所以有效,是因为VBA擅长将“20”自动转换为20。

@SJR-试图找出它不起作用的原因以及如何使其起作用。进一步阅读,它描述了每种方法的不同之处(优点)。使用方括号的优点是代码更短。使用Evaluate的优点是参数是字符串,因此可以在代码中构造字符串,也可以使用Visual Basic变量。这意味着直接进入
[]
的字符串不一样。/方括号和Evaluate与使用字符串变量
[s]
不一样,但是
Evaluate(s)
不一样。有趣的是,即时窗口中的行为似乎与模块不同。如果将变量声明为string s=“Fred”,则立即窗口中的[s]和Evaluate都会返回错误。在模块中,后一个错误。有趣的是,
inputString=“20”*“300”
使用[]返回正确的结果以进行计算。有人知道在Evaluate中,
+
运算符是否因加法和字符串串联而过载吗?我删除了我的答案以获得这个答案。这绝对是一个字符串参数。我已经证明了这是@SMeaden的博文-我想我们不会得到两个
评估
过程的来源,因此这看起来是一个可以接受的答案。@Vityata:我想我可能给了你一个错误的双重评估,这是我在类型库中发现的一件有趣的事情,它使方括号起作用。顺便说一句,如果您想要一个表达式引擎,那么将表达式指定给单元格的公式会非常有效。C#程序员没有与Excel的单元格解析器等效的表达式计算器。@SMeaden-类似的东西(错误的方向)。我认为这两个
Evaluate
是关于
[]
Evaluate
@Vityata的:实际上,我认为方括号中的内容被视为字符串可能是一个特性。其他技术的一些源代码片段可以插入VBA,而无需双引号,