如何才能實現:代替模仿 「IN」 操作
if X in (1,2,3) then
:
if x=1 or x=2 or x=3 then
換句話說,怎樣才能最好的一個模仿IN
運營商VBA爲Excel?
如何才能實現:代替模仿 「IN」 操作
if X in (1,2,3) then
:
if x=1 or x=2 or x=3 then
換句話說,怎樣才能最好的一個模仿IN
運營商VBA爲Excel?
我不認爲有一個非常優雅的解決方案。
但是,你可以嘗試:
If Not IsError(Application.Match(x, Array("Me", "You", "Dog", "Boo"), False)) Then
,或者你可以寫自己的函數:
Function ISIN(x, StringSetElementsAsArray)
ISIN = InStr(1, Join(StringSetElementsAsArray, Chr(0)), _
x, vbTextCompare) > 0
End Function
Sub testIt()
Dim x As String
x = "Dog"
MsgBox ISIN(x, Array("Me", "You", "Dog", "Boo"))
End Sub
你嘗試
eval("3 in(1,2,3,4,5)")
這應該工作。 –
我得到「子或功能未定義」 - 不知道這是因爲我在VBA(不是VB)?已編輯該問題... –
它是Access VBA功能。對不起,我沒有看到你提到的Excel VBA。 – THEn
有沒有,我所知道的。
我通常使用像一個自釀InArray()函數在http://www.freevbcode.com/ShowCode.asp?ID=1675
你也可以做一個版本,通過數組,而不是串聯迭代,如果是更適合您的數據類型。
你也可以嘗試CASE語句而不是IF
Select Case X
Case 1 To 3
' Code to do something
Case 4, 5, 6
' Code to do something
Case 7
' Code to do something
Case Else
' More code or do nothing
End Select
您也可以作爲描述here
使用過濾功能我現在寫的......
Public Function IsInArray(FindValue As Variant, ParamArray arrEmailAttachment()) As Boolean
Dim element As Variant
For Each element In arrEmailAttachment
If element = FindValue Then
IsInArray = True
Exit Function
End If
Next element
IsInArray = False
End Function
難道你不能只是避免功能,並使用類似: 'InStr( 1, 「MeYouDogBoo」,x)的'? – redOctober13
@ redOctober13如果使用在x中找不到的分隔符分隔列表項,這可能會起作用。否則,YouDo會觸發InStr。 – mrdaddychops