VBA:如何查找字符串中“@”符号后面的值

Aar*_*den 4 string vba

我正在尝试将 @ 符号后面的字母设置为变量。

例如,x = @BAL

我想设置y = BAL

或者x = @NE

我想y = NE

我正在使用VBA。

K.D*_*ᴠɪs 8

Split()我认为最简单的方法是:

Dim myStr As String
myStr = "@BAL"
If InStr(, myStr, "@") > 0 Then '<-- Check for your string to not throw error
    MsgBox Split(myStr, "@")(1)
End If
Run Code Online (Sandbox Code Playgroud)

正如Scott Craner明智地指出的那样,您应该检查以确保字符串包含该值,他在此评论中通过执行以下操作来检查该值y = Split(x,"@")(ubound(Split(x,"@")):另一种方法是使用InStr()If InStr(, x, "@") > 0 Then...

它将(1)获取您要查找的角色的第一个实例之后的所有内容。如果你曾经使用过,那么这就会把之前的一切都拿走。(0)@


类似但不同的例子:

Dim myStr As String
myStr = "@BAL@TEST"

MsgBox Split(myStr, "@")(2)
Run Code Online (Sandbox Code Playgroud)

消息框会返回,TEST因为您使用了(2),这是您@角色的第二个实例。


然后你甚至可以将它们分成一个数组:

Dim myStr As String, splitArr() As String
myStr = "@BAL@TEST"

splitArr = Split(myStr, "@")   '< -- don't append the collection number this time

MsgBox SplitArr(1)  '< -- This would return "BAL"
MsgBox SplitArr(2)  '< -- This would return "TEST"
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找其他阅读材料,请参阅 MSDN 中的更多内容

分割功能

描述返回一个从零开始的一维数组,其中包含指定数量的子字符串。SyntaxSplit ( expression [ , delimiter [ , limit [ , Compare ]]] ) Split函数语法具有以下命名参数:

表达

必需的。包含子字符串和分隔符的字符串表达式。如果表达式是零长度字符串(“”),则Split返回一个空数组,即没有元素和数据的数组。

分隔符

选修的。用于标识子串限制的字符串字符。如果省略,则假定空格字符 (" ") 为分隔符。如果分隔符是零长度字符串,则返回包含整个表达式字符串的单元素数组。

限制

选修的。要返回的子串数量;-1表示返回所有子字符串。

比较

选修的。指示评估子字符串时使用的比较类型的数值。有关值,请参阅“设置”部分。