VBA:如何在字符串Split Function中的“@”符号后面找到值

问题描述 投票:1回答:2

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

例如,x = @BAL

我想设置y = BAL

或者x = @NE

我想要y = NE

我正在使用VBA。

string vba
2个回答
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明智地指出的那样,你应该检查以确保字符串包含值,他在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表示返回所有子字符串。

相比

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


2
投票

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

x = "@BAL"

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

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

© www.soinside.com 2019 - 2024. All rights reserved.