Arrays If语句通过检查变量';存在于一个数字数组中

Arrays If语句通过检查变量';存在于一个数字数组中,arrays,vba,excel,if-statement,Arrays,Vba,Excel,If Statement,经过长时间的搜索,我无法找到我的问题的有效答案,所以这是我最后的选择 我有一个For语句在数组中循环。但是,我希望循环跳过数组中特定点处的项 以下是我目前的代码: Public Sub test () Dim FArray(10, 1) As String Dim Supported() As Variant Supported = Array(2, 4, 5) 'Functional Text FArray(0, 0) = "B30" FArray(0, 1) = "B3" 'Funct

经过长时间的搜索,我无法找到我的问题的有效答案,所以这是我最后的选择

我有一个For语句在数组中循环。但是,我希望循环跳过数组中特定点处的项

以下是我目前的代码:

Public Sub test ()

Dim FArray(10, 1) As String
Dim Supported() As Variant

Supported = Array(2, 4, 5)

'Functional Text
FArray(0, 0) = "B30"
FArray(0, 1) = "B3"
'Functional Audio
FArray(1, 0) = "B31"
FArray(1, 1) = "B17"
'PS Text
FArray(2, 0) = "B33"
FArray(2, 1) = "B4"
'PS Audio
FArray(3, 0) = "B34"
FArray(3, 1) = "B18"
'Advanced V2 Text
FArray(4, 0) = "B36"
FArray(4, 1) = "B5"
'Advanced V2 Audio
FArray(5, 0) = "B37"
FArray(5, 1) = "B19"
'Cus Text
FArray(6, 0) = "B39"
FArray(6, 1) = "B6"
'Cus Audio
FArray(7, 0) = "B40"
FArray(7, 1) = "B20"
'Implicit
FArray(8, 0) = "B42"
FArray(8, 1) = "B7"
'OOD
FArray(9, 0) = "B44"
FArray(9, 1) = "B8"
'OOD Audio
FArray(10, 0) = "B45"
FArray(10, 1) = "B21"

For I = LBound(FArray) To UBound(FArray)
    If I = LBound(Supported) To Ubound(Supported) Then

    Else

    idsource = FArray(I, 1)
    OutputCell = FArray(I, 0)
    'Debug.Print (idsource)
    'Debug.Print (OutputCell)

    Call DLResults_generic(idsource, OutputCell)

    End If

Next I
如您所见,我使用变量“I”启动For循环,然后使用第二个数组(支持)标记希望For循环跳过的点。我可以做到:

If I = 2 Or I = 4 Or I = 5 Then
但是我想要更容易更改的东西,这样我就可以进入受支持的数组并输入新值

如果有人能帮我找到一种方式说‘如果‘I’在受支持的数组中,请跳过For循环中的此项’,我将不胜感激


谢谢

我会使
受支持
成为一个字典,这样您就不必每次都迭代它来确定其中是否有值:

Set Supported = CreateObject("Scripting.Dictionary") 
Supported.Add 2, True
Supported.Add 3, True
Supported.Add 5, True
然后你的循环:

For I = LBound(FArray) To UBound(FArray)
    If Not Supported.Exists(I) Then
        idsource = FArray(I, 1)
        ' ... etc ... 
    End If
Next I

我将使
受支持
成为一个字典,这样您就不必每次都迭代它来确定其中是否有值:

Set Supported = CreateObject("Scripting.Dictionary") 
Supported.Add 2, True
Supported.Add 3, True
Supported.Add 5, True
然后你的循环:

For I = LBound(FArray) To UBound(FArray)
    If Not Supported.Exists(I) Then
        idsource = FArray(I, 1)
        ' ... etc ... 
    End If
Next I

听起来您需要使用
继续在for循环中,尝试查找有关如何使用它的信息。@steven没有
继续在vba中。是的,我刚刚通过搜索自己注意到了这一点,我看到了这篇文章,也许这是一个不错的替代:你可以构建一个用户函数来检查值是否是数组的一部分,尝试查看未测试的值,但是如果是数值(application.match(I,Supported,0)),那么
听起来你需要使用
继续在for循环中,尝试查找有关如何使用它的信息。@steven没有
继续在vba中。是的,我刚刚通过搜索自己注意到了这一点,我看到了这篇文章,也许这是一个不错的替代:你可以构建一个用户函数来检查值是否是数组的一部分,尝试查看未测试的值,但是如果是数值(application.match(I,Supported,0)),那么这是一个优雅的解决方案,我没有想到,非常感谢!这是一个优雅的解决方案,我没有想到,非常感谢!