VBA該当データがない時にエラーメッセージを表示する方法

このQ&Aのポイント
  • VBAを使用して、架空の取引先との請求処理をデータベースで管理するシステムを製作中です。
  • 請求データ照会エントリーフォームのテキストボックスに取引先コードを入力し照会ボタンを押下すると、取引先マスターテーブルと合致するデータが表示されるようにしています。
  • 登録されたデータに該当するものがない場合には、請求データ照会Fのフォームを表示せずに、メッセージボックスで「該当するデータがありません。」などのメッセージを表示したいです。
回答を見る
  • ベストアンサー

VBA 該当データがない時 エラーメッセージを表示

いつもお世話になっております。 システム開発の練習中で、架空の取引先との請求処理をデータベースで管理するシステムを製作中です。 請求データ照会エントリーフォームのテキストボックスに取引先コードを入力し照会ボタンを押下すると取引先マスターテーブルと合致するデータが請求データ照会フォーム上に現れるといった流れで制作しています。 フォーム展開の流れは 〔請求データ照会エントリーF〕→〔請求データ照会F〕 と、単純なものです。 請求データ照会Fにデータの反映をすることは出来たのですが、取引先コードが先に登録されたデータに該当するものがない場合で照会ボタン押下した際、現段階ではまっさらなフォームが現れてスッキリしていないので、請求データ照会Fのフォームを表示せずに、メッセージボックスで「該当するデータがありません。」などといったメッセージを出したいのですが、出来ませんでした。 以下、照会ボタンクリック時の現段階でのプログラムです。 Private Sub 照会_Click() On Error GoTo Err_照会_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "請求データ照会F" stLinkCriteria = "[取引先コード]=" & "'" & Me![取引先コードtxt] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_照会_Click: Exit Sub Err_照会_Click: MsgBox Err.Description Resume Exit_照会_Click End Sub どういった内容のプログラムを組めばよいか、アドバイスいただませんか?? 宜しくお願いいたします☆

  • 8607
  • お礼率87% (35/40)

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

  • ベストアンサー
回答No.1

こんにちは フォームを開く前に該当レコードの有無を調べる必要があります if DCount(...) = 0 then  メッセージ  exit sub endif DCountはヘルプを参照してください。

8607
質問者

お礼

ありがとうございました☆ 早速やってみたところ、完璧でした!! とても参考になりました。また何かの機会に宜しくお願いいたします♪

関連するQ&A

  • 検索時のみデータの変更を不可

    検索条件を入力するフォームA、検索でヒットしたレコードを表形式で表示するフォームB、フォームBにて詳細ボタンをクリックすると、単票形式のフォームCを表示する設定にしてあります。 このうち、フォームCはデータを入力するときに使用しています。 検索でヒットさせた場合のみ、フォームCのデータを変更できないようにするにはどうしたらいいでしょうか? よろしくお願いします。 下記のVBAが、フォームBの詳細ボタンをクリックしたときに、フォームCを開くためのコードです。 このVBAのどこに入れたらいいでしょうか? よろしくお願いします。 なお、このVBAはウィザードで作成されたものです。 Private Sub cmd詳細_Click() On Error GoTo Err_cmd詳細_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(102) & ChrW(114) & ChrW(109) & ChrW(-28982) & ChrW(20001) & ChrW(12487) & ChrW(12540) & ChrW(12479) stLinkCriteria = "[ID]=" & Me![ID] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmd詳細_Click: Exit Sub Err_cmd詳細_Click: MsgBox Err.Description Resume Exit_cmd詳細_Click End Sub

  • サブ画面(参照のみ)を表示しつつ、メインのフォームの操作をしたい

    Private Sub cmd14検索_Click() On Error GoTo Err_cmd14検索_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "F社員データ" stLinkCriteria = "[所属名称2]=" & "'" & Me![所属名称] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmd14検索_Click: Exit Sub Err_cmd14検索_Click: MsgBox Err.Description Resume Exit_cmd14検索_Click End Sub という操作でメイン画面(フォーム)を開きます。 そして、これと同時に、サブ画面(参照のみ)としてもうひとつ画面を表示だけさせておきたいのですが、何かよい方法はありませんか? ちなみに、このコードは、自分が書いたものではなく、ツールボックスのコントロールウィザードで作成したものです。 なので、コードは正直書けません。 が、なんとかよい方法があれば教えてください。 宜しくお願い致します。

  • XPアップロード後のアクセスの不具合

    「新規フォームを開く」フォームボタンがXPのアップロード後「コンパイルエラー」と表示されるようになりました。 詳細は下記の通りで、1行目が全て黄色くなっていました。もしおわかりでしたら、お助けください。 よろしくお願いします。 ----------------------------------------------- Private Sub 商品コードスキャンを開く_Click() On Error GoTo Err_商品コードスキャンを開く_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(21830) & ChrW(21697) & ChrW(12467) & ChrW(12540) & ChrW(12489) & ChrW(12473) & ChrW(12461) & ChrW(12515) & ChrW(12531) DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_商品コードスキャンを開く_Click: Exit Sub Err_商品コードスキャンを開く_Click: MsgBox Err.Description Resume Exit_商品コードスキャンを開く_Click End Sub ----------------------------------------------

  • フォームの検索で一致データが無い場合の表示

    簡単なシステムを作成している初心者です。 エクセル2003を使用しています。 コマンドウィザードを使用してVBAに入力されている状態です。 検索用のフォーム(F_番号検索)で番号を入力し(テキストボックス[番号入力欄])、検索コマンドを押し 一致した番号の情報のみ別フォーム(F_情報)に表示されます 一致した番号の情報がなくても F_情報のフォームが開いてしまうのですが、 これを別フォームでもしくはメッセージボックスで「一致する番号はありません」等の表示 をしたいのですが上手くいきません。 どうすればいいでしょうか・・・? Private Sub 検索_Click() On Error GoTo Err_検索_Click Dim stDocName As String Dim stLinkCriteria As String stLinkCriteria = "[番号]=" & "'" & Me![番号入力欄] & "'" DoCmd.OpenForm "F_情報", , , stLinkCriteria [Forms]![F_番号検索].Visible = True Exit_検索_Click: Exit Sub Err_検索_Click: MsgBox Err.Description Resume Exit_検索_Click End Sub

  • ACCESS エラーメッセージ表示されない理由

    ACCESSのエラーメッセージ表示について教えてください。 ACCESS2000でマクロを作成しました。 あるデータを読み込み、テーブルへ反映させるマクロです。 マクロを直接実行すると、データが存在しないとき、当然、エラーメッセージが表示されます。 ところが、このマクロをフォームから実行させると、同じ状況でエラーメッセージが表示されません。 どこに問題があってメッセージが表示されないものなのでしょう。(正常系の処理は正しく行われます) フォームのボタンにマクロの実行を定義しただけなのですが。 VBAを開いてみても、下記のとおりクリックされたときエラーならメッセージを表示しなさいと定義されています。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click   Dim stDocName As String   stDocName = "マクロ名"   DoCmd.RunMacro stDocName Exit_コマンド1_Click:   Exit Sub Err_コマンド1_Click:   MsgBox Err.Description   Resume Exit_コマンド1_Click End Sub

  • accessで、フォームの検索をしたいのです。

    今ACCESSで、データ管理をしているのですが、どうしてもうまくいかなくて、困っています。 毎日の出来事を記述するテーブル用のフォームを作って、記述していて、そのデータがたまってきています。 他のフォームに、検索用のテキストボックスとコマンドボックスを作って検索したいのです。 コントロールウィザードを使うと、完全一致のデータしかでてこないのですが、部分一致のレコードを表示させるにはどうすればいいのですか? 教えていただけるとうれしいです。 コントロールウィザードを使うと以下のようになります。多分少しどこかを変えるといいのではないかと思うのです。どうか、よろしくお願いします。 Private Sub コマンド144_Click() On Error GoTo Err_コマンド144_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(21839) & ChrW(12356) & ChrW(21512) & ChrW(12431) & ChrW(12379) & ChrW(12513) & ChrW(12514) stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド144_Click: Exit Sub Err_コマンド144_Click: MsgBox Err.Description Resume Exit_コマンド144_Click End Sub もしかして。。と思い、以下の部分、 stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" を次のように変えてみたけれど、やっぱりうまくいきませんでした。 stLinkCriteria = "[内容]=" & "'" & "*" & Me![テキスト105] & "*" & "'" よろしくお願いします。

  • Access フォームで検索した結果をフォームで表示するときにあいまい検索をしたい

    Access2003を使用して、検索フォームをつくり、検索結果を別フォームへ表示させるプログラムを組みました。 その際に、かな検索をするとかなが完全一致でないと検索されません。 あいまい検索にてかな検索をする方法はありませんでしょうか? ソースは以下の通りです。 Private Sub cmdSearch_Click() On Error GoTo Err_cmdSearch_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(70) & ChrW(95) stLinkCriteria = "[カナ氏名]=" & "'" & Me![カナ氏名] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmdSearch_Click: Exit Sub Err_cmdSearch_Click: MsgBox Err.Description Resume Exit_cmdSearch_Click End Sub

  • アクセスのイベント記述について。

    アクセスのあるフォームA上にある詳細ボタンをクリックすると別のフォームCが開くようにしてあるのですが、クリックすると同時にAフォームを閉じるにはどのように記述したらよいでしょうか? 詳細ボタンの記述は下記のとおりです。よろしくお願いいたします。 Private Sub 詳細_Click() On Error GoTo Err_詳細_Click Dim stDocName As String Dim stLinkCriteria As String DoCmd.Close stDocName = ChrW(12513) & ChrW(12531) & ChrW(12486) & ChrW(12490) & ChrW(12531) & ChrW(12473) stLinkCriteria = "[管理番号]=" & Me![管理番号] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_詳細_Click: Exit Sub Err_詳細_Click: MsgBox Err.Description Resume Exit_詳細_Click End Sub

  • アクセスにて検索フォームを作りたい

    お世話になります。 アクセス初心者です。 会社名検索フォームに会社名を入力して表示コマンドをクリックすると 会社フォームの入力した会社が表示されるようにしたいのです。 現在は、表示コマンドをクリックすると会社フォームが開きます。 どの会社名を打ち込んでもNo.1のレコードしか開きません。 つまり会社フォームが開く という指示をしているだけです。 コードなど全く分かりません。 ただ、本を見て真似て下記の通り入力してみました。 間違っているor足りない ということはわかっていますが、 どう入力すれば良いのかわかりません。 教えて下さい。よろしくお願いいたします。 Private Sub cmd表示_Click() On Error GoTo Err_cmd表示_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "会社フォーム" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmd表示_Click: Exit Sub Err_cmd表示_Click: MsgBox Err.Description Resume Exit_cmd表示_Click End Sub

  • アクセスのイベント記述について。

    あるフォーム(患者IDで検索した結果を表示した表形式のフォーム)でコマンド30をクリックしたら、別の入力画面が開くように設定したのですが、患者IDのみ一致したフォームが開くようにはなったのですが、これプラス、依頼日も一致したフォームが開くようにしたいです。以下の記述に変更を加えるとしたら、どのようにしたらよいのでしょうか?よろしくお願いいたします。 Private Sub コマンド30_Click() On Error GoTo Err_コマンド30_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(81) & ChrW(58) & ChrW(26908) & ChrW(20307) & ChrW(21029) & ChrW(20837) & ChrW(21147) & ChrW(-238) stLinkCriteria = "[患者ID]=" & Me![患者ID] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド30_Click: Exit Sub Err_コマンド30_Click: MsgBox Err.Description Resume Exit_コマンド30_Click End Sub

専門家に質問してみよう