String VBA:如何查找“a”之后的值@&引用;字符串中的符号

String VBA:如何查找“a”之后的值@&引用;字符串中的符号,string,vba,String,Vba,我试图将@符号后面的字母设置为变量 例如,x=@BAL 我想设置y=BAL 或x=@NE 我想要y=NE 我正在使用VBA 您可以执行以下操作以获取@符号后面的子字符串 x = "@BAL" y = Right(x,len(x)-InStr(x,"@")) 其中x可以是任何字符串,在@符号之前或之后都有字符。您可以执行以下操作以获取@符号之后的子字符串 x = "@BAL" y = Right(x,len(x)-InStr(x,"@")) 其中x可以是任意字符串,在@符号之前或之后都有字

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

例如,
x=@BAL

我想设置
y=BAL

x=@NE

我想要
y=NE


我正在使用VBA

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

x = "@BAL"

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

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

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

x = "@BAL"

y = Right(x,len(x)-InStr(x,"@"))
其中x可以是任意字符串,在@符号之前或之后都有字符。

Split()
在我看来,这是最简单的方法:

x = "@BAL"

y = Right(x,len(x)-InStr(x,"@"))
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
消息框将返回
测试
,因为您使用了
(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"
Dim myStr作为字符串,splitArr()作为字符串
myStr=”@BAL@TEST"
splitArr=Split(myStr,“@”)<--这次不要追加集合号
MsgBox SplitArr(1)<--这将返回“BAL”
MsgBox SplitArr(2)<--这将返回“TEST”

如果您正在寻找其他阅读资料,请参阅:

Description返回一个基于零的一维数组,该数组包含指定数量的子字符串SYNTASSPLIT表达式[,分隔符[,限制[,比较]])函数语法具有以下命名参数:

表达

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

分隔符

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

限制

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

比较

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

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
消息框将返回
测试
,因为您使用了
(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"
Dim myStr作为字符串,splitArr()作为字符串
myStr=”@BAL@TEST"
splitArr=Split(myStr,“@”)<--这次不要追加集合号
MsgBox SplitArr(1)<--这将返回“BAL”
MsgBox SplitArr(2)<--这将返回“TEST”

如果您正在寻找其他阅读资料,请参阅:

Description返回一个基于零的一维数组,该数组包含指定数量的子字符串SYNTASSPLIT表达式[,分隔符[,限制[,比较]])函数语法具有以下命名参数:

表达

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

分隔符

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

限制

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

比较

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


就我个人而言,我会使用MID,更少的键入
y=MID(x,InStr(x,“@”)+1)
我认为Right()更直观。无论如何,有很多方法可以完成这项任务,不管哪种方法对你来说更有意义。更像
Mid(x,((InStr(x,“@”)-1)和65535)+2)
如果
@
丢失,这在访问查询中也很有效
y:Right([Access\u field],Len([Access\u field])-InStr([Access\u field],“)
就我个人而言,我会使用MID,少输入
y=MID(x,InStr(x,“@”)+1)
我认为Right()更直观。无论如何,有很多方法可以完成这项任务,不管哪一种对你更有意义。更像是
Mid(x,((InStr(x,“@”)-1)和65535)+2
如果
@
丢失,这在访问查询中也很有效
y:Right([Access\u field],Len([Access\u field])-InStr([Access\u field],“)