配列内存在チェック 

指定された値が指定配列内に存在するかどうかを返す version1.0

配列が空だった場合の挙動は適宜修正されるとよい。
いろんなところで使える。
同値が見つかった時点で処理を抜けている点がポイント。

'指定された値が指定された配列内に存在するかどうかを返す(ある:true、ない:false)
Function isExistArray(targetArray As Variant, checkValue As String)
    isExistArray = False
    
    If UBound(targetArray) = -1 Then
        'UBoundの戻り値:-1は要素数0を示す。この場合、すべて対象と判断する
        isExistArray = True
        Exit Function
    End If
    
    For i = LBound(targetArray) To UBound(targetArray)
        If targetArray(i) = checkValue Then
            isExistArray = True
            Exit For
        End If
    Next
End Function

展望

亜種として、存在するか、ではなく配列内のいずれかの値から始まるか、も用意したい。おわるか、含むか、も。


亜種

値が配列の何番目に存在するかを返す。
使用想定は存在することを前提としているが、存在しない場合は-1を返す。

'指定された値が指定された配列内の何番目に存在するかを返す
Function isExistArrayReturnIndex(targetArray As Variant, checkValue As String)
    isExistArrayReturnIndex = -1
    
    If UBound(targetArray) = -1 Then
        'UBoundの戻り値:-1は要素数0を示す。この場合、-1を返す
        isExistArrayReturnIndex = -1
        Exit Function
    End If
    
    For i = LBound(targetArray) To UBound(targetArray)
        If targetArray(i) = checkValue Then
            isExistArrayReturnIndex = i
            Exit For
        End If
    Next
End Function


コメント