我正在用 vba 写一个条件语句,比如
if(userID = 1 or userID = 2 or userID = 3 or userID = 4) then
...
我想知道是否有更快,更清洁的方法来做到这一点。就像是
if(userID in (1,2,3,4)) then
...
谢谢
我正在用 vba 写一个条件语句,比如
if(userID = 1 or userID = 2 or userID = 3 or userID = 4) then
...
我想知道是否有更快,更清洁的方法来做到这一点。就像是
if(userID in (1,2,3,4)) then
...
谢谢
另一种选择是:
select case userID
case 1,2,3,4,5,6
' do something
end select
它很好地传达了if ... then ... else
结构的含义。
另一种方式
If UBound(Filter(Array(1, 2, 3, 4, 5, 6), UserID)) > -1 Then
过滤器返回一个匹配的数组。如果没有匹配,ubound = -1。
您可以Application.Match
在数组上使用该函数:
If Not IsError(Application.Match(userID, Split("1,2,3,4",","))) Then...
CW,因为这与假设的示例相匹配,但不太可能是真实的使用情况。但是,Like
要知道是一个很好的关键字。
If userID Like "[1-6]" Then
这对于单个数字检查是可以的,但对于现实世界的多字符用户 ID 则不行。
IE
userID = 1
If userID Like "[1-6]" Then ' result is True
但
userID = 11
If userID Like "[1-6]" Then ' result is False
你可以做一个这样的基本功能:
Function InArray(Match, SourceArray)
InArray = False
For i = LBound(SourceArray) To UBound(SourceArray)
If SourceArray(i) = Match Then
InArray = True
Exit Function
End If
Next
End Function
然后你可以说:
if InArray(userId, array(1,2,3,4)) then msgbox "Found it!"