• ベストアンサー

ある値が、配列のなかに存在するか、知る関数

お世話になります ある値が、配列のなかに存在するか、知る関数、はありませんか たとえば、配列:Aryに、10,20,30,40、と入っている 値20、をもってチェックしたとき、True、が返り 値22、ではFalse、が返る こんな関数ないでしょうか ACCESSのVBAです よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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)
回答No.1

こんにちは。 > ある値が、配列のなかに存在するか、 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 関数は 使えなかったと思います。 では。

関連するQ&A