はじめに
VBAで、配列の中に指定の要素が含まれているかを確認する関数の備忘録です。
結論
対象の値と一致しているかどうか、要素の中を1から順に確認していきます。1から順に調べていくため、配列の要素数が多くなると時間がかかってしまうことに注意してください。予想としては1万個ぐらいになってくると時間がかかることが体感的にわかってきそうです。
サンプルコード
Sub 検証()
Dim arr(1 To 5) As Long
arr(1) = 3
arr(2) = 1
arr(3) = 4
arr(4) = 1
arr(5) = 5
Debug.Print (InArray(1, arr))
Debug.Print (InArray(5, arr))
Debug.Print (InArray(6, arr))
Debug.Print (InArray(9, arr))
End Sub
'配列に含まれているかを調べる
Private Function InArray(ByVal value As Long, ByRef arr() As Long) As Boolean
Dim i As Integer
For i = LBound(arr) To UBound(arr)
If arr(i) = value Then
InArray = True
Exit Function
End If
Next
InArray = False
End Function
結果
True
True
False
False
補足
InArray
関数を宣言するところでPrivate
と記述しています。これを付けることで、エクセルのワークシートの関数候補から表示されなくなるようです。しかし、関数名を直接入力すれば使用はできるようなのでそこは注意が必要です。
詳しくは、下記の記事が参考になります。
以上です。