我试图将@符号后面的字母设置为变量。
例如,x = @BAL
我想设置y = BAL
或者x = @NE
我想要y = NE
我正在使用VBA。
在我看来,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明智地指出的那样,你应该检查以确保字符串包含值,他在this comment中检查: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)
消息框将返回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(expression [,delimiter [,limit [,compare]]])Split函数语法具有这些名称参数:
表达
需要。包含子字符串和分隔符的字符串表达式。如果expression是零长度字符串(“”),则Split返回一个空数组,即没有元素且没有数据的数组。
分隔符
可选的。用于标识子字符串限制的字符串字符。如果省略,则假定空格字符(“”)是分隔符。如果delimiter是零长度字符串,则返回包含整个表达式字符串的单元素数组。
限制
可选的。要返回的子串数; -1表示返回所有子字符串。
相比
可选的。数值,指示在评估子字符串时要使用的比较类型。请参阅设置部分了解值。
您可以执行以下操作来获取@符号后面的子字符串。
x = "@BAL"
y = Right(x,len(x)-InStr(x,"@"))
其中x可以是任何字符串,在@符号之前或之后有字符。