VBA:InStr 関数で「実行時エラー '7'」が発生する |
対象バージョン : 2000(MDB)
最終更新日 : 1999/09/21 ( オリジナル作成日 : 1999/09/21 )
現 象
新規データベースの並び順序が "日本語 Unicode" で作成された mdb ファイルで、Option Compare Database 指定のあるモジュールでのプロシージャで InStr 関数を実行すると次のエラーが発生。
実行時エラー '7': メモリが不足しています。 |
再現手順
1.メニュー [ツール(T)] - [オプション(O)...] で表示される "オプション" ダイアログで "全般" タブの "新規データベースの並び順序(N)" を "日本語 Unicode" に変更します。
2.メニュー [ツール(T)] - [データベースユーティリティ(D)] - [最適化/修復(C)] を実行。
3.次のプロシージャを実行します。
Public Sub Sample() Dim intpos As Integer intpos = InStr("ABCDEFGHI", "I") End Sub
原 因
不明です。
対応方法
1.支障がなければ新規データベースの並び順序を "日本語" とする。
2.InStr での検索を、データベースの並び順にこだわらなくでもよければ、第四引数 compare に vbBinaryCompare または vbTextCompare を指定する。
intpos = InStr(1, "ABCDEFGHI", "I", vbTextCompare)
3.文字コード・機能コード等、もともとバイナリ比較を行っているのであれば、InStrB 関数に変える。
intpos = InStrB(strInputData, vbCrLf)