- ベストアンサー
途中で処理を中断させたい (アクセスVBA)
早速ですが、アクセスVBAでエラー処理のコードを作成していますが、メッセージボックス出力後に、 "実行時エラー13:型が一致しません" とでてきます。 おそらくデータが入っていないのにもかかわらず、次の処理を続行してしまうためにこのようなことが起こっているのではないかと思います。どのように処理をすればよいのでしょうか? 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2の方の答えが正しいです。 MsgBoxを表示させた後に、 Exit Subをつけないと、処理がそのまま続行されてしまうので、 エラーが発生してしまいます。 なので、データのチェックを行い、 エラーメッセージを表示した後に、 必ず、ExitSubをつけましょう。
その他の回答 (2)
これでどうなるかわかりませんが、 'データ名が入力されているかどうかチェック If IsNull([Forms]![ラベル作成登録画面]![cmbDTL]) Then MsgBox "データ名[左]を入力してください" End If などの入力チェックに 'データ名が入力されているかどうかチェック If IsNull([Forms]![ラベル作成登録画面]![cmbDTL]) Then MsgBox "データ名[左]を入力してください" Exit Sub End If というようにExit subを入れないとプログラムは進んでいってしまうんじゃないですかね。
- kouta52
- ベストアンサー率27% (32/116)
うーん。。。難しい質問ですね。 質問自体は、すごく単純な質問なのですが、 実際のプログラムを見てみないと、返答ができません。 例えばですが、 本来であれば処理を実行する前に、処理するデータが存在するかどうかをチェックして、 存在しないのであれば、処理をExitするだけだと思います。 プログラムを載せる事はできますか?
補足
kouta52さんへ プログラムの内容は下記のとおりです。 宜しくお願いします。 ************************************************** 'ラベル作成登録画面の左をクリック Private Sub 左_Click() 'データ名が入力されているかどうかチェック If IsNull([Forms]![ラベル作成登録画面]![cmbDTL]) Then MsgBox "データ名[左]を入力してください" End If '病院名が入力されているかどうかチェック If IsNull([Forms]![ラベル作成登録画面]![cmbHPL]) Then MsgBox "顧客名[左]を入力してください" End If '曜日が入力されているかどうかチェック If IsNull([Forms]![ラベル作成登録画面]![cmbYBL1]) Then MsgBox "曜日1を入力してください (予備の場合は空白を選択してください)" End If '曜日が入力されているかどうかチェック If IsNull([Forms]![ラベル作成登録画面]![cmbYBL2]) Then MsgBox "曜日2を入力してください (予備の場合は空白を選択してください)" End If '曜日が入力されているかどうかチェック If IsNull([Forms]![ラベル作成登録画面]![cmbYBL3]) Then MsgBox "曜日3を入力してください (予備の場合は空白を選択してください)" End If 'ラベルレポートを開く DoCmd.OpenForm "左" With [Forms]![左]![txtDTL1] .SetFocus .Text = [Forms]![ラベル作成登録画面]![cmbDTL] End With With [Forms]![左]![txtDTL2] .SetFocus .Text = [Forms]![ラベル作成登録画面]![cmbDTL] End With With [Forms]![左]![txtDTL3] .SetFocus .Text = [Forms]![ラベル作成登録画面]![cmbDTL] End With With [Forms]![左]![txtHPL1] .SetFocus .Text = [Forms]![ラベル作成登録画面]![cmbHPL] + " 御中" End With With [Forms]![左]![txtHPL2] .SetFocus .Text = [Forms]![ラベル作成登録画面]![cmbHPL] + " 御中" End With With [Forms]![左]![txtHPL3] .SetFocus .Text = [Forms]![ラベル作成登録画面]![cmbHPL] + " 御中" End With With [Forms]![左]![txtYBL1] .SetFocus .Text = [Forms]![ラベル作成登録画面]![cmbYBL1] End With With [Forms]![左]![txtYBL2] .SetFocus .Text = [Forms]![ラベル作成登録画面]![cmbYBL2] End With With [Forms]![左]![txtYBL3] .SetFocus .Text = [Forms]![ラベル作成登録画面]![cmbYBL3] End With End Sub