• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB5.0 で実行時エラーがでる)

VB5.0で実行時エラーが発生する

このQ&Aのポイント
  • VB5.0でDBGRIDを呼び出し、戻ってきてからメッセージボックスを表示しようとすると、「実行時エラー5 プロシージャの呼び出し、または引数が不正です」が出ます。
  • F_SelKokyak.Show vbModalの後に、条件に応じたレコードを取得しようとしています。
  • レコードが存在しない場合、エラーメッセージを表示して処理を終了します。

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

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.6

> 元の現象 > は発生します。 > On Errorを最初の行に入れましたが、同じ現象です。 そうですか・・・と言うことは、 「システムのエラー処理自体がおかしくなっている」か、 「(何故か)全然関係ない箇所でエラーが発生している」か、 どちらかでしょうね。 前者なら、私にはお手上げ(「MsgBoxを使うのをあきらめる?」ぐらいしか提案できません)、 後者なら・・・「全コード(全プロシージャ)に、同様に「On Error」と「行ラベル」を入れてみて、実際のエラー発生箇所を探す」ぐらいしか無いと思います。

hirorih
質問者

お礼

On Errorを全てのsubに入れ、絞って行ったところ、 全然関係ない箇所でエラーが発生していました。 なんとか解決できました、ありがとうございました。

その他の回答 (8)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.9

★追記。 ・バグを発見! ・『MsgBox』がある『If Then』の『End If』が『Exit Sub』になっているので、  『実行時エラー5 プロシージャの呼び出し、または引数が不正です』が出ると思います。 ・以上。おわり。

hirorih
質問者

お礼

なんとか解決出来ました、ありがとうございました。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.8

★1つだけアドバイス ・『MsgBox "売掛金はありません。", vbCritical, "入力エラー"』の行を  『MsgBox("売掛金はありません。", vbCritical, "入力エラー")』とカッコをつけてたらどうなる? ・以上。おわり。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.7

http://homepage2.nifty.com/winfaq/c/trouble.html#643 によりますと、Windowsの現行版に対応していないアプリをインストールすると 音が出なくなることがあるようです。 VB5.0はXPには対応していないので、OSの定数テーブルが壊れたのでは ないかと推測します。 vbCritical定数と"入力エラー"を指定せず、単なるMsgBoxだけでも、 エラーになりますでしょうか?

hirorih
質問者

お礼

なんとか解決出来ました、ありがとうございました。

hirorih
質問者

補足

MsgBoxだけでも同じ現象です

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.5

> On Errorにもひっかからず、エラーメッセージは出ませんでした。 元の現象 > メッセージボックスが表示される前にエラーが出ます。 > その後、エラーを閉じると、メッセージボックスが表示され、 > メッセージボックスを閉じると、プログラムが終了します。 は、発生したんでしょうか?それとも、コレも発生しなくなった? 発生するなら・・・ 別の箇所でエラーの可能性がありますが・・・ 「On Error」はSub(Function?)の最初の方に入れたんでしょうか? #違う場合、「On Error」をSubの最初の行として入れても同じでしょうか? #コレで駄目となら・・・申し訳ありませんが、私はGiveUpです・・・

hirorih
質問者

補足

>元の現象 >> メッセージボックスが表示される前にエラーが出ます。 >> その後、エラーを閉じると、メッセージボックスが表示され、 >> メッセージボックスを閉じると、プログラムが終了します。 は発生します。 On Errorを最初の行に入れましたが、同じ現象です。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.4

1つ確認するのを忘れていました。 「MsgBox」って言う名前の関数とかを、作ってませんよね? #まず無いとは思いますが、念の為。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.3

> メッセージボックスが表示される前にエラーが出ます。 > その後、エラーを閉じると、メッセージボックスが表示され、 > メッセージボックスを閉じると、プログラムが終了します。 完全に想定外の動作・・・私の手に負えないかも・・・ #VB5+XPの組み合わせは、MSの動作保証外なので、 #組み合わせが原因の不具合だと手の打ち様が無い場合も・・・ とりあえず、 > それもEXEから実行する時だけです。 の時のデバッグ方法。 あ。その前に、1点確認です。 ソースのどこかで、「On Error」の指定をしているところがありますか? もし、あるなら、先ず、「On Error」の行を全部コメントにしてから実行してみてください。 動作が変わりますか? #変わった場合、どう変わったか教えてください。 もし、「On Error」が無い、または、あったが、コメントにしても動作が変わらない場合、 コードを以下の様に書き換えてから、実行してみてください。 ---------------------------------------------------------- On Error Goto ERRX: ' <= 追加 1: '<=追加(要するに、各行の前に「1:」「2:」・・・と「行ラベル」を付けてください。) F_SelKokyak.Show vbModal 2: '<=追加 If Wk_Modoru = 0 Then   Set RecUri = MAINdb.OpenRecordset("Select * " & _ " From FT_Uriage " & _ " Where Uri_MiseCode = " & Wk_MiseCode & _ " And Uri_KaisKbn = " & 1 & _ " And Uri_KyakCode = " & Sel_KyakCode & _ " And Uri_UriSbt = " & 0 & _ " And Uri_UriKakKin <> 0" & _ " Order By Uri_UriNo; ") 3: '<=追加 If RecUri.RecordCount = 0 Then 4: '<=追加 RecUri.Close 5: '<=追加 Set RecUri = Nothing 6: '<=追加 If Wk_KaisKbn = 2 Then 7: '<=追加 MsgBox "売掛金はありません。", vbCritical, "入力エラー" 8: '<=追加 F_EigMainInp!txtKyakName2.SetFocus 9: '<=追加 Exit Sub 10: '<=追加 End If 11: '<=追加 End If 12: '<=追加 ' 以下は、End Subとかの直前に追加 Exit Sub ' もし、関数の中なら、「Exit Function」 ERRX: MsgBox "Err:" & Err.Number & "(" & Err.Description & ")on " & Erl ---------------------------------------------------------- で、どのタイミングで、エラーメッセージがでるか教えてください。

hirorih
質問者

補足

On Errorは書いていません。 ご指示の通りにしましたが、何も変わりません。 On Errorにもひっかからず、エラーメッセージは出ませんでした。 MsgBox という関数は作っていません。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

> いいえ、MsgBox "売掛金はありません。", vbCritical, "入力エラー"を > 入れたらエラーになるんですが、 > はずせばエラーにはならないんです。 つまり、「メッセージボックスが表示されない表示する前にエラーになる)」ってことでしょうか? それとも、「メッセージボックスは表示されるが、メッセージボックを閉じた後にエラーになる」ってことでしょうか? 後者なら、「MsgBox」の次の行、 つまり「F_EigMainInp!txtKyakName2.SetFocus」でエラーになったのかもしれません。 ちなみに、私は、後者のつもりで回答しました。 #念の為お尋ねしますが・・・「どの行がエラーか」確認してますか? #デバッグしてますか? > また、そうだとすると、どうすればいいのでしょうか? もしそうなら、 > > MsgBox "売掛金はありません。", vbCritical, "入力エラー" > > F_EigMainInp!txtKyakName2.SetFocus > この2行の順番を逆にしてみるとか・・・ こうするだけで直る可能性がありますけど・・・ #これで、直らない&デバッグしていない場合、デバッグしてみてください。 #デバッグのやり方がわからないなら、お尋ねください。

hirorih
質問者

補足

メッセージボックスが表示される前にエラーが出ます。 その後、エラーを閉じると、メッセージボックスが表示され、 メッセージボックスを閉じると、プログラムが終了します。 > > MsgBox "売掛金はありません。", vbCritical, "入力エラー" > > F_EigMainInp!txtKyakName2.SetFocus > この2行の順番を逆にしてみるとか・・・ 逆にしてみましたが、エラーになります。 デバッグのやりかたを教えていただけますでしょうか。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

> F_EigMainInp!txtKyakName2.SetFocus ここで、エラーってことでしょうか? フォーカスの移動が間に合っていないのでは? #フォームがアクティブになっていない・・・ > MsgBox "売掛金はありません。", vbCritical, "入力エラー" > F_EigMainInp!txtKyakName2.SetFocus この2行の順番を逆にしてみるとか・・・

hirorih
質問者

補足

>> F_EigMainInp!txtKyakName2.SetFocus >ここで、エラーってことでしょうか? いいえ、MsgBox "売掛金はありません。", vbCritical, "入力エラー"を入れたらエラーになるんですが、はずせばエラーにはならないんです。 >フォーカスの移動が間に合っていないのでは? >#フォームがアクティブになっていない・・・ これはどう言うことでしょうか? また、そうだとすると、どうすればいいのでしょうか?

関連するQ&A

専門家に質問してみよう