VBA Excel – 提取括号括起来的每个值

我想提取括号内的值。

文字=“{说}和{var2}以及{var3}

openingParen = InStr(text, "{") closingParen = InStr(text, "}") enclosedValue = Mid(text, openingParen + 1, closingParen - openingParen - 1) phrasevariable1.Value = enclosedValue phrasevariable2.Value = enclosedValue phrasevariable3.Value = enclosedValue 

这个代码只适用于提取第一个值,是否有办法提取每个variables,并相应地将它们放入文本框1-> n

您可以使用正则expression式来处理未知数量的候选令牌;

 Dim matches As Object Dim Re As Object: Set Re = CreateObject("vbscript.regexp") Dim count As Long Re.Pattern = "{(.*?)}" Re.Global = True Set matches = Re.Execute("The man who {said} and also {var2} as well as {var3}") count = matches.count For i = 0 To count - 1 MsgBox matches(i).submatches(0) Next 

(向Microsoft VBScript正则expression式添加一个ref以提前绑定)

假设在括号中总是有三对文本,只需创build一个数组variables,然后在文本string上使用split来获取值:

 Dim myArray myArray = Split(text, "{") phasevariable1.Value = Left(myArray(1), InStr(myArray(1), "}") - 1) phasevariable2.Value = Left(myArray(2), InStr(myArray(2), "}") - 1) phasevariable3.Value = Left(myArray(3), InStr(myArray(3), "}") - 1) 

另一种方式允许任何数量的匹配:

 Const stri As String = "The man who {said} and also {var2} as well as {var3}" Dim sp sp = Filter(Split(Replace(Chr(13) & stri, "}", "{" & Chr(13)), "{"), Chr(13), False)