Оценивая строки в VBA

У меня есть строка, которая читается из ячейки в 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 становится красной, и я не могу ее запустить.

Есть идеи? Спасибо Гораций

2 ответа

Решение

Вместо этого вы указываете 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

Сначала загрузите имя в переменную, т.е. name = """Horace Lai""" (будет содержать кавычки)

Затем используйте функцию замены для поиска кавычек в имени name = Replace(name,"""","")

Затем запустите msgbox MsgBox (name & vbNewLine & Date)

Это должно удалить лишние "отметки, с которыми вы сталкиваетесь

Другие вопросы по тегам