ACCESS VBA にて複数項目のあいまい検索をしようとしています。
txt部所、txt内容、txt備考はそれぞれ検索窓です。
実行すると、
「オブジェクト変数またはWithブロック変数が設定されていません」
というメッセージがでます。
また、動作としては部所の検索のみでき、
内容、備考検索は上記のエラーメッセージが出てできない状態です。
アドバイスよろしくお願いいたします。
以下がコードになります。
Private Sub cmd01_Click()
Me.FilterOn = False
If txt部所 <> "" Then
Me.Filter = "[部所氏名]like '*" & txt部所 & "*'"
ElseIf txt内容 <> "" Then
Me.Filter = "[内容]like '*" & txt内容 & "*'"
ElseIf txt備考 <> "" Then
Me.Filter = "[備考]like '*" & txt備考 & "*'"
ElseIf Nz(txt部所) & Nz(txt内容) & Nz(txt備考) = "" Then
MsgBox "検索条件を入力してください"
End If
Me.FilterOn = True
End Sub
No.10ベストアンサー
- 回答日時:
まずは、エラーとなるときに、
このエラー検知時のエラー箇所特定、対処例をまずマスターすることです。
それが分かればこの先のエラーもなんとかしのげます。
対処がわからず、闇雲にいろいろ試すのはあまりいい手段ではありません。
(何が原因かわからずやっていたらうまくいったというのは上達しないやり方です。。)
見ている限りではいろいろ試してはいるものの、
原因はともかく「エラー箇所行の特定」についてはなにも進んでいないように思います。
例えば、
ElseIf Me!txt備考 <> "" ThenやNz(Me!txt備考)で
エラーが起き、Me!txt備考が認識されていないという想定がついたなら、
Me!txt備考=""
でどうか、はやってみる価値あります。
>Me!txt備考 = Nothing
というのも、
内容をクリアの意味でやっているなら、Me!txt備考 = ""、
デフォルトが全件数させたいなら、Me!txt備考 = "*"
であり、
フォームを開くとき、次のフィルタを実行するときの両方のイベントに
行うのが良いです。
今の状況からは、
フォーム開いて、クリアしてから1回目のフィルタを行うと
2回目と同様、ここを通過するので同じようにエラーになるはず。
前述のように3パターンで確認お願いします。
1)1回目フィルタ→クリア→2回目フィルタ
2)クリア→1回目フィルタ
3)1回目フィルタ→フォーム閉じる→1回目フィルタ
1)はエラーとのことですが、2)もエラー、3)は問題なし、
と想定しています。
ありがとうございました!
Me!txt備考 = ""、
で試してみたところ、うまく抽出、クリアできました。
本当にありがとうございました!
No.9
- 回答日時:
エラーが検出されないのならば、
>Private Sub cmd02_Click()
>Me!txt部所 = Nothing
>Me!txt内容 = Nothing
>Me!txt備考 = Nothing
>Me.FilterOn = False
>End Sub
を
Private Sub cmd02_Click()
Me!txt部所 = ""
Me!txt内容 = ""
Me!txt備考 = ""
Me.FilterOn = False
End Sub
としたらどうなりますか?
No.8
- 回答日時:
再確認です。
ボタン押した瞬間のTXT部所ら3項目は、参照不可にならず、意図した内容ですか。参照設定は問題ないですか。
IF文のELSEIFをやめてそれぞれのIF文にしてさらに箇所絞り込みましたか。
NZの使い方は合っていますか。各項目それぞれが何も無い、3項目連結しても何も無い、としたいと思いますが今のは中途半端な式です。括弧かNZ(TXT部所)=“”&のようにした方がいいのではないですか。=が備考にのみ掛かっています。案外これかと。
MEとさせてますが、フォームはこれ以外にありますか。実際は裏でフォームが開いていたとか。
1回目→クリア→2回目
クリア→1回目、
1回目→閉じる→1回目
これまでの回答結果を整理して、
コンパイルや操作しても変わらず、以外の結果も教えて下さい。
同じ環境を再現出来るレベルでないのでこれくらいです。
No.7
- 回答日時:
チェックを入れたら、
Option Compare Database
Option Explicit
と記されていないのならば
Option Explicit
を追加して、保存し、コンパイルしてください。
Option Explicit
が記されていれば追加する必要は
ありません。これで今一度、
コード表のデバッグ→コンパイル
を選択し、実行してください。
これで変数扱いになっている
文字列がコンパイルエラーとして
表示されます。
まだ、どこかにエラーがあるはずです。
No.6
- 回答日時:
2解明とは2回目のことですね?。
きちんと稼動するものが2回目におかしいとなると、このクリック時のロジックでなく他の処理が影響しているのかと根拠は薄いですが想定されます。
フォーム開いてフィルタ実行、フォーム開いて実行は正しくなりますか。フォーム開いて実行、また実行がおかしい?。
オブジェクト変数~のエラーが実行時に出るからには1回目と2回目で項目名が変わるとかフィルタの命令文が認識できないように壊れてるとかデータ不正に依存したり、実行環境が変わってしまっている。
クリアして1回目フィルタはどうですか。
止まるのは
どの行でか特定してますか。
先に進めるには罠かけ。
メッセージボックスを追記して正しいところを明確にしましょう。
この回答への補足
フォームを開いて1回目だけどの検索窓でも正しく検索できます。
クリアボタンを押して2回目の検索をすると、
If Nz(txt部所) & Nz(txt内容) & Nz(txt備考) = "" Then
の部分でエラーになります。
ためにしに、この部分を削除して、検索条件だけにしてみましたが、
やはりif分の1行目でエラーになってしまいます。
No.5
- 回答日時:
エラー表示が無いのはどうにも
わからないのですが。
コード表の一番上には、
Option Compare Database
Option Explicit
と記されていますか。
コード表のツール→オプション→編集
の変数の宣言を強制するにチェックが
入っていますか。入っていなければ
入れてください。
そのあたりはどうですか。
この回答への補足
エラー表示が無いのはどうにも
わからないのですが。
コード表の一番上には、
Option Compare Database
Option Explicit
と記されていますか。
>ption Compare Database と記載されています
コード表のツール→オプション→編集
の変数の宣言を強制するにチェックが
入っていますか。入っていなければ
入れてください。
そのあたりはどうですか。
>チェックを入れたところ、エラーメッセージは出なくなりましたが、
まったくレコードを抽出しなくなりました。
No.4
- 回答日時:
追加です。
コード表でツールバーのデバッグからコンパイル
を選択して実行すればコンパイルエラーが表示され、
変数が定義されていません、と出ます。
'*" & txt部所 & "*'"
'*" & txt内容 & "*'"
など、その他で出るはずです。
この回答への補足
アドバイスありがとうございます。
コンパイルを実行してみましたが、
エラーメッセージは表示されませんでした。
そして1回実行すると、メニューがグレーアウトしてしまうのですが、
複数はコンパイルできないものなのでしょうか?
初歩的なことをお伺いしてすみません。
それから不思議に思うのは、検索は1回までなら正常に検索できるのですが、
1度条件をクリアーして2回目の検索を行うとエラーメッセージが表示されます。
クリアーボタンのコードは以下になります。
Private Sub cmd02_Click()
Me!txt部所 = Nothing
Me!txt内容 = Nothing
Me!txt備考 = Nothing
Me.FilterOn = False
End Sub
No.3
- 回答日時:
エラーの意味を書いておきます。
>オブジェクト変数またはWithブロック変数が設定されていません
でGoogle検索すればすぐでてきますが、要点は、
「無効な変数が参照されています」
ということです。つまりコードの中で変数宣言されていない
文字列が存在して、これは何?とAccessからエラー表示が
された、ということです。
この回答への補足
すみません、後ひとつ質問させてください。
コンパイルをし用紙とすると、デバッグーメニューに
「データベース名コンパイル」と出ると調べましたが、
私の場合、データベース名変更前の名前+コンパイルと出てきます。
そのことでうまくコンパイルできていないんでしょうか?
No.2
- 回答日時:
ステップ実行したか。
フィルタで指定する各テーブルの項目やフォームの項目、は正しいか、
と
判定を一旦はずし、フィルタを定義した行だけで実行してもダメか。
後、
3つとも無いケースは最初に判断する。
内容と備考に値あるとき内容だけのフィルタ設定になるが良いのか。
そんな感じです。
この回答への補足
アドバイスありがとうございます。
3つともないケースを最初に持ってきましたが、
やはり2解明にエラーが起こるという現象はかわりませんでした。
それから判定をはずしてみましたが、やはりかわりませんでした。
内容と備考に値があるとき内容のみの検索になるのはかまいません。
No.1
- 回答日時:
コードにMe!を追加するとどうなりますか。
If Me!txt部所 <> "" Then
Me.Filter = "[部所氏名]like '*" & Me!txt部所 & "*'"
ElseIf Me!txt内容 <> "" Then
Me.Filter = "[内容]like '*" & Me!txt内容 & "*'"
ElseIf Me!txt備考 <> "" Then
Me.Filter = "[備考]like '*" & Me!txt備考 & "*'"
ElseIf Nz(Me!txt部所) & Nz(Me!txt内容) & Nz(Me!txt備考) = "" Then
MsgBox "検索条件を入力してください"
End If
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/04 12:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
雪の女王、ボラの少女時代を演...
-
複数のテキストファイルをエク...
-
【バッチファイル】ホスト名を...
-
VBAで○○:○○と表示させたいのに...
-
昔のテレビっておっぱいが出て...
-
バンタンのDOPEの最初って ラプ...
-
堀秀政の通称「久太郎」の読み方
-
twiceのミナちゃんと仲里依紗ち...
-
韓流好き妻の行動に怒り…私は狭...
-
韓国
-
この牢屋から脱出するには? ...
-
エクセルで四者択一の問題を作...
-
最新のiPad Proを購入した方に...
-
latestの対義語
-
TextBoxコントロールを引数とし...
-
Accessのレポートで重複データ...
-
韓流女と別れたい
-
全国の最新の金融機関コード・...
-
TWICEのライブについてです 母...
-
40代の妻が
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
昔のテレビっておっぱいが出て...
-
複数のテキストファイルをエク...
-
【バッチファイル】ホスト名を...
-
バンタンのDOPEの最初って ラプ...
-
TextBoxコントロールを引数とし...
-
VBAで○○:○○と表示させたいのに...
-
Adobe Acrobat と Adobe Reader...
-
参照設定は2.8と6.0 6.1とどち...
-
水に映った月明かりを表す言葉
-
TWICEのライブについてです 母...
-
デスクチェア―のガスシリンダー...
-
韓流女と別れたい
-
imac2012ってまだ使えますか?...
-
韓流好き妻の行動に怒り…私は狭...
-
減少率の計算方法
-
PCの不具合について
-
東京ドームのコンサート、一番...
-
角度の求め方
-
latestの対義語
-
KPOP女性4皇
おすすめ情報