在VBA中评估字符串

时间:2014-06-20 09:57:10

标签: vba scriptcontrol

我有一个从Excel中的单元格读取的字符串,如下所示:

""Horace Lai" & vbNewLine & Date"

或者

"Chr(149) & "level 1" & vbNewLine & Chr(9) & Chr(149) & "level 2" & Chr(149) & "level 1" & vbNewLine & Chr(9) & Chr(149) & "level 2" & vbNewLine & Chr(9) & Chr(9) & Chr(149) & "level 3""

我希望能够评估这些字符串,以便""Horace Lai" & vbNewLine & Date"成为:

Horace Lai 2014-06-20

到目前为止,我已经尝试过ScriptControl而没有成功。当我有字符串的双引号时,它似乎不喜欢它。

Sub testing()

Dim sc As ScriptControl
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"

MsgBox sc.Eval(""Horace Lai" & vbNewLine & Date")

End Sub

MsgBox行变为红色,我无法运行它。

有什么想法吗?谢谢 -Horace

2 个答案:

答案 0 :(得分:0)

首先将名称加载到变量即name = """Horace Lai"""(这将包含引号)

然后使用replace函数搜索名称为name = Replace(name,"""","")

的引号

然后运行MsgBox (name & vbNewLine & Date)

的msgbox

这应该删除额外的"你要面对的标志

答案 1 :(得分:0)

您指定 JScript ,而不是:

Dim test As String, result As String
test = "Chr(149) & ""level 1"" & vbNewLine & Chr(9) & Chr(149) & ""level 2"" & Chr(149) & ""level 1"" & vbNewLine & Chr(9) & Chr(149) & ""level 2"" & vbNewLine & Chr(9) & Chr(9) & Chr(149) & ""level 3"""

Dim sc As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "VBScript"

result = sc.Eval(test)

Debug.Print result

•level 1
    •level 2•level 1
    •level 2
        •level 3