我试图将@符号后的字母设置为变量。
例如,x = @BAL
我想设置y = BAL
或x = @NE
我想要y = NE
我正在使用VBA。
答案 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可以是任何字符串,在@符号之前或之后有字符。