- ベストアンサー
ある値が、配列のなかに存在するか、知る関数
お世話になります ある値が、配列のなかに存在するか、知る関数、はありませんか たとえば、配列:Aryに、10,20,30,40、と入っている 値20、をもってチェックしたとき、True、が返り 値22、ではFalse、が返る こんな関数ないでしょうか ACCESSのVBAです よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 それは、サブルーチンのユーザー定義関数にすればよいのではありませんか? Function ArrayFind(BaseArray As Variant, SearchNum As Variant) As Boolean Dim flg As Boolean Dim v As Variant flg = False For Each v In BaseArray If v = SearchNum Then flg = True Exit For End If Next v ArrayFind = flg End Function ただし、浮動小数点型の数値の比較は、少し手直ししないとうまくいかないことがあるかと思います。
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。 > ある値が、配列のなかに存在するか、 Filter 関数を使うか、配列全体をループさせてチェックするか... 以下は Filter 関数の場合のサンプルです。 Dim vSrc As Variant Dim vRet As Variant Dim sKey As String ' テスト配列 vSrc = Array(10, 20, 30, 40) ' 検索値(文字列で指定する) sKey = CStr(20) ' Filter 関数で検査する vRet = Filter(SourceArray:=vSrc, _ Match:=sKey, _ Include:=True, _ Compare:=vbTextCompare) ' Ubound(vRet) で -1 が返れば該当なし If UBound(vRet) >= 0 Then MsgBox "含まれる", vbInformation Else MsgBox "含まれない", vbCritical End If 詳細は Filter 関数のヘルプをご覧下さい。 Access2002 で確認しました。Access97 では恐らく Filter 関数は 使えなかったと思います。 では。