在VBA中创建求值字符串

在VBA中创建求值字符串,vba,outlook,Vba,Outlook,我有一个字符串列表,定义为 Dim replyFormat(0 To 999) As String 以及答案列表,如下所示: Dim answers(0 to 999) As String 在整个代码中,某些字符串被添加到replyFormat中,看起来类似于: Name: {1} {3} 完成所有操作后,我定义了一个名为sendBack的字符串,并开始在replyFormat中的每一行中循环。我想将sendBack设置为等于它本身加上replyFormat,计算花括号中数字的答案,最后将

我有一个字符串列表,定义为

Dim replyFormat(0 To 999) As String
以及答案列表,如下所示:

Dim answers(0 to 999) As String
在整个代码中,某些字符串被添加到replyFormat中,看起来类似于:

Name: {1} {3}

完成所有操作后,我定义了一个名为sendBack的字符串,并开始在replyFormat中的每一行中循环。我想将sendBack设置为等于它本身加上replyFormat,计算花括号中数字的答案,最后将vbCrLf添加到末尾。对于exmaple,如果答案包含{Yes,John,H,Doe}且回复格式为“Name:{1}{3}”,则会输出“Name:John Doe”

如果这是您的对象:

Ob = { Yes, John, H, Doe},
您可以选择如下所示的对象项:

Ob(1), Ob(3)
有关更多信息,请参阅此链接:


听起来您指的是VBA不支持的反射。但是,您可以通过使用正则表达式(RegEx)实现所需的结果:

示例用法:

Sub FooBar()

    Dim answers(0 To 3) As String
    Const testString = "Name: {1} {3}"

    answers(0) = "Test"
    answers(1) = "John"
    answers(2) = "Testing"
    answers(3) = "Doe"

    Debug.Print FormattedString(testString, answers) '// "Name: John Doe"

End Sub

您不能在VBAI中创建这样的“对象”,也就是说,如果您已经创建了一个对象,那么您可以使用该方法来获取该项。不创建新对象。@SAM如果您创建了一个数组或集合,您可以使用这样的索引来检索项—问题是如何解析文本并从中检索索引,然后将其计算为可执行代码。
Sub FooBar()

    Dim answers(0 To 3) As String
    Const testString = "Name: {1} {3}"

    answers(0) = "Test"
    answers(1) = "John"
    answers(2) = "Testing"
    answers(3) = "Doe"

    Debug.Print FormattedString(testString, answers) '// "Name: John Doe"

End Sub