VBA:如何在" @"之后找到值。字符串中的符号

时间:2018-02-28 22:11:07

标签: string vba

我试图将@符号后的字母设置为变量。

例如,x = @BAL

我想设置y = BAL

x = @NE

我想要y = NE

我正在使用VBA。

2 个答案:

答案 0 :(得分:3)

我认为

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

正如Scott Craner明智指出的那样,您应该检查以确保字符串包含值,并通过执行y = Split(x,"@")(ubound(Split(x,"@"))检查this comment。另一种方法是使用InStr()If InStr(, x, "@") > 0 Then...

(1) 。如果您使用了(0),那么这将占用@之前的所有内容。

类似但不同的例子:

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

MsgBox Split(myStr, "@")(2)

消息框将返回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"

如果您正在寻找其他阅读材料,请参阅MSDN

  

Split Function

     

描述返回包含指定数量子串的从零开始的一维数组。 SyntaxSplit 表达 [,分隔符 [,限制 [,比较]]] ) Split 函数语法具有这些名称参数:

     

<强>表达

     
    

必需。包含子字符串和分隔符的字符串表达式。如果expression是一个零长度字符串(&#34;&#34;), Split 将返回一个空数组,即一个没有元素且没有数据的数组。

  
     

<强>定界符

     
    

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

  
     

<强>限制

     
    

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

  
     

<强>比较

     
    

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

  

答案 1 :(得分:2)

您可以执行以下操作来获取@符号后面的子字符串。

x = "@BAL"

y = Right(x,len(x)-InStr(x,"@"))

其中x可以是任何字符串,在@符号之前或之后有字符。