29

どうすれば達成できますか:

if X in (1,2,3) then

それ以外の:

if x=1 or x=2 or x=3 then

言い換えれば、INVBA for Excel の演算子をどのように真似ることができるのでしょうか?

4

7 に答える 7

16

非常にエレガントな解決策はないと思います。

ただし、次のことを試すことができます。

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
于 2009-10-01T17:12:34.120 に答える
15

IFの代わりにCASEステートメントを試すこともできます

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
于 2009-10-02T11:56:48.900 に答える
2

試しましたか

eval("3 in(1,2,3,4,5)")
于 2009-10-01T17:13:37.730 に答える
1

私が知っているものはありません。

私は通常、 http: //www.freevbcode.com/ShowCode.asp? ID=1675 にあるような自家製の InArray() 関数を使用します。

データ型により適している場合は、連結する代わりに配列を反復処理するバージョンを作成することもできます。

于 2009-10-01T17:15:35.603 に答える
-1

今書きました…

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
于 2016-10-10T14:02:25.803 に答える