Arrays 如何使用VBA Excel从表达式中提取多个子字符串

Arrays 如何使用VBA Excel从表达式中提取多个子字符串,arrays,string,vba,Arrays,String,Vba,我有一个用户输入的表达式,它可以是 {{heading1} + {{heading2} * {heading3}}} 用表达式编写时,每个标题都包含在大括号{}中 我想使用Excel宏分别提取字符串数组中的“heading1”、“heading2”和“heading3”。请帮我写代码。您可以使用正则表达式。 用于模式匹配。要在Excel中使用,请执行以下步骤 步骤1:将VBA引用添加到“Microsoft VBScript正则表达式5.5” 选择“开发人员”选项卡() 从“代码”功能区部分

我有一个用户输入的
表达式
,它可以是

{{heading1} + {{heading2} * {heading3}}} 
用表达式编写时,每个标题都包含在大括号
{}


我想使用Excel宏分别提取
字符串
数组
中的“heading1”、“heading2”和“heading3”。请帮我写代码。

您可以使用正则表达式。 用于模式匹配。要在Excel中使用,请执行以下步骤

步骤1:将VBA引用添加到“Microsoft VBScript正则表达式5.5”

  • 选择“开发人员”选项卡()
  • 从“代码”功能区部分选择“Visual Basic”图标
  • 在“Microsoft Visual Basic for Applications”窗口中,从顶部菜单中选择“Tools”
  • 选择“参考资料”
  • 选中“Microsoft VBScript正则表达式5.5”旁边的复选框,将其包含在工作簿中
  • 单击“确定”
例子
您可以使用正则表达式。 用于模式匹配。要在Excel中使用,请执行以下步骤

步骤1:将VBA引用添加到“Microsoft VBScript正则表达式5.5”

  • 选择“开发人员”选项卡()
  • 从“代码”功能区部分选择“Visual Basic”图标
  • 在“Microsoft Visual Basic for Applications”窗口中,从顶部菜单中选择“Tools”
  • 选择“参考资料”
  • 选中“Microsoft VBScript正则表达式5.5”旁边的复选框,将其包含在工作簿中
  • 单击“确定”
例子
您可以使用正则表达式。 用于模式匹配。要在Excel中使用,请执行以下步骤

步骤1:将VBA引用添加到“Microsoft VBScript正则表达式5.5”

  • 选择“开发人员”选项卡()
  • 从“代码”功能区部分选择“Visual Basic”图标
  • 在“Microsoft Visual Basic for Applications”窗口中,从顶部菜单中选择“Tools”
  • 选择“参考资料”
  • 选中“Microsoft VBScript正则表达式5.5”旁边的复选框,将其包含在工作簿中
  • 单击“确定”
例子
您可以使用正则表达式。 用于模式匹配。要在Excel中使用,请执行以下步骤

步骤1:将VBA引用添加到“Microsoft VBScript正则表达式5.5”

  • 选择“开发人员”选项卡()
  • 从“代码”功能区部分选择“Visual Basic”图标
  • 在“Microsoft Visual Basic for Applications”窗口中,从顶部菜单中选择“Tools”
  • 选择“参考资料”
  • 选中“Microsoft VBScript正则表达式5.5”旁边的复选框,将其包含在工作簿中
  • 单击“确定”
例子
酷。。这真的很有帮助。我还有一个问题,我们是否可以将表达式中的heading1、heading2、heading3等替换为#1、#2、…等等,并使用连续数字。你能帮我找出上面要使用的功能吗?你可以调整括号之间的图案
[a-zA-Z0-9]
。目前,它允许任何小写和大写字母以及数字。如果需要其他字符,则必须修改该模式。例如,要允许
#
将其更改为
[a-zA-Z0-9#]
。但是要小心一些特殊字符必须用反斜杠转义,因为它们在正则表达式中用作运算符。酷。。这真的很有帮助。我还有一个问题,我们是否可以将表达式中的heading1、heading2、heading3等替换为#1、#2、…等等,并使用连续数字。你能帮我找出上面要使用的功能吗?你可以调整括号之间的图案
[a-zA-Z0-9]
。目前,它允许任何小写和大写字母以及数字。如果需要其他字符,则必须修改该模式。例如,要允许
#
将其更改为
[a-zA-Z0-9#]
。但是要小心一些特殊字符必须用反斜杠转义,因为它们在正则表达式中用作运算符。酷。。这真的很有帮助。我还有一个问题,我们是否可以将表达式中的heading1、heading2、heading3等替换为#1、#2、…等等,并使用连续数字。你能帮我找出上面要使用的功能吗?你可以调整括号之间的图案
[a-zA-Z0-9]
。目前,它允许任何小写和大写字母以及数字。如果需要其他字符,则必须修改该模式。例如,要允许
#
将其更改为
[a-zA-Z0-9#]
。但是要小心一些特殊字符必须用反斜杠转义,因为它们在正则表达式中用作运算符。酷。。这真的很有帮助。我还有一个问题,我们是否可以将表达式中的heading1、heading2、heading3等替换为#1、#2、…等等,并使用连续数字。你能帮我找出上面要使用的功能吗?你可以调整括号之间的图案
[a-zA-Z0-9]
。目前,它允许任何小写和大写字母以及数字。如果需要其他字符,则必须修改该模式。例如,要允许
#
将其更改为
[a-zA-Z0-9#]
。但要小心,一些特殊字符必须用反斜杠转义,因为它们在正则表达式中用作运算符。由于我是VBA新手,所以我无法尝试任何操作。只有C和Java是我的强项。因为我是VBA新手,所以我什么都不能尝试。只有C和Java是我的强项。因为我是VBA新手,所以我什么都不能尝试。只有C和Java是我的强项。因为我是VBA新手,所以我什么都不能尝试。只有C和Java是我的强项。
Private Sub regEx()

    Dim UserInput As String
    UserInput = "{{heading1} + {{heading2} * {heading3}}}"

    Dim Pattern As String
    Pattern = "\{([a-zA-Z0-9]*)\}"

    Dim regEx As New RegExp

    With regEx
        .Global = True
        .MultiLine = True
        .IgnoreCase = False
        .Pattern = Pattern
    End With

    Dim Matches
    Set Matches = regEx.Execute(UserInput)

    For Each Match In Matches
        Debug.Print "Match found at position " & Match.FirstIndex
        Debug.Print "Match Value is '" & Match.Value & "'"
        Debug.Print ""
    Next

End Sub