- ベストアンサー
VB5.0で実行時エラーが発生する
- VB5.0でDBGRIDを呼び出し、戻ってきてからメッセージボックスを表示しようとすると、「実行時エラー5 プロシージャの呼び出し、または引数が不正です」が出ます。
- F_SelKokyak.Show vbModalの後に、条件に応じたレコードを取得しようとしています。
- レコードが存在しない場合、エラーメッセージを表示して処理を終了します。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
> 元の現象 > は発生します。 > On Errorを最初の行に入れましたが、同じ現象です。 そうですか・・・と言うことは、 「システムのエラー処理自体がおかしくなっている」か、 「(何故か)全然関係ない箇所でエラーが発生している」か、 どちらかでしょうね。 前者なら、私にはお手上げ(「MsgBoxを使うのをあきらめる?」ぐらいしか提案できません)、 後者なら・・・「全コード(全プロシージャ)に、同様に「On Error」と「行ラベル」を入れてみて、実際のエラー発生箇所を探す」ぐらいしか無いと思います。
その他の回答 (8)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★追記。 ・バグを発見! ・『MsgBox』がある『If Then』の『End If』が『Exit Sub』になっているので、 『実行時エラー5 プロシージャの呼び出し、または引数が不正です』が出ると思います。 ・以上。おわり。
お礼
なんとか解決出来ました、ありがとうございました。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★1つだけアドバイス ・『MsgBox "売掛金はありません。", vbCritical, "入力エラー"』の行を 『MsgBox("売掛金はありません。", vbCritical, "入力エラー")』とカッコをつけてたらどうなる? ・以上。おわり。
- PED02744
- ベストアンサー率40% (157/390)
http://homepage2.nifty.com/winfaq/c/trouble.html#643 によりますと、Windowsの現行版に対応していないアプリをインストールすると 音が出なくなることがあるようです。 VB5.0はXPには対応していないので、OSの定数テーブルが壊れたのでは ないかと推測します。 vbCritical定数と"入力エラー"を指定せず、単なるMsgBoxだけでも、 エラーになりますでしょうか?
お礼
なんとか解決出来ました、ありがとうございました。
補足
MsgBoxだけでも同じ現象です
- dsuekichi
- ベストアンサー率64% (171/265)
> On Errorにもひっかからず、エラーメッセージは出ませんでした。 元の現象 > メッセージボックスが表示される前にエラーが出ます。 > その後、エラーを閉じると、メッセージボックスが表示され、 > メッセージボックスを閉じると、プログラムが終了します。 は、発生したんでしょうか?それとも、コレも発生しなくなった? 発生するなら・・・ 別の箇所でエラーの可能性がありますが・・・ 「On Error」はSub(Function?)の最初の方に入れたんでしょうか? #違う場合、「On Error」をSubの最初の行として入れても同じでしょうか? #コレで駄目となら・・・申し訳ありませんが、私はGiveUpです・・・
補足
>元の現象 >> メッセージボックスが表示される前にエラーが出ます。 >> その後、エラーを閉じると、メッセージボックスが表示され、 >> メッセージボックスを閉じると、プログラムが終了します。 は発生します。 On Errorを最初の行に入れましたが、同じ現象です。
- dsuekichi
- ベストアンサー率64% (171/265)
1つ確認するのを忘れていました。 「MsgBox」って言う名前の関数とかを、作ってませんよね? #まず無いとは思いますが、念の為。
- dsuekichi
- ベストアンサー率64% (171/265)
> メッセージボックスが表示される前にエラーが出ます。 > その後、エラーを閉じると、メッセージボックスが表示され、 > メッセージボックスを閉じると、プログラムが終了します。 完全に想定外の動作・・・私の手に負えないかも・・・ #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 ---------------------------------------------------------- で、どのタイミングで、エラーメッセージがでるか教えてください。
補足
On Errorは書いていません。 ご指示の通りにしましたが、何も変わりません。 On Errorにもひっかからず、エラーメッセージは出ませんでした。 MsgBox という関数は作っていません。
- dsuekichi
- ベストアンサー率64% (171/265)
> いいえ、MsgBox "売掛金はありません。", vbCritical, "入力エラー"を > 入れたらエラーになるんですが、 > はずせばエラーにはならないんです。 つまり、「メッセージボックスが表示されない表示する前にエラーになる)」ってことでしょうか? それとも、「メッセージボックスは表示されるが、メッセージボックを閉じた後にエラーになる」ってことでしょうか? 後者なら、「MsgBox」の次の行、 つまり「F_EigMainInp!txtKyakName2.SetFocus」でエラーになったのかもしれません。 ちなみに、私は、後者のつもりで回答しました。 #念の為お尋ねしますが・・・「どの行がエラーか」確認してますか? #デバッグしてますか? > また、そうだとすると、どうすればいいのでしょうか? もしそうなら、 > > MsgBox "売掛金はありません。", vbCritical, "入力エラー" > > F_EigMainInp!txtKyakName2.SetFocus > この2行の順番を逆にしてみるとか・・・ こうするだけで直る可能性がありますけど・・・ #これで、直らない&デバッグしていない場合、デバッグしてみてください。 #デバッグのやり方がわからないなら、お尋ねください。
補足
メッセージボックスが表示される前にエラーが出ます。 その後、エラーを閉じると、メッセージボックスが表示され、 メッセージボックスを閉じると、プログラムが終了します。 > > MsgBox "売掛金はありません。", vbCritical, "入力エラー" > > F_EigMainInp!txtKyakName2.SetFocus > この2行の順番を逆にしてみるとか・・・ 逆にしてみましたが、エラーになります。 デバッグのやりかたを教えていただけますでしょうか。
- dsuekichi
- ベストアンサー率64% (171/265)
> F_EigMainInp!txtKyakName2.SetFocus ここで、エラーってことでしょうか? フォーカスの移動が間に合っていないのでは? #フォームがアクティブになっていない・・・ > MsgBox "売掛金はありません。", vbCritical, "入力エラー" > F_EigMainInp!txtKyakName2.SetFocus この2行の順番を逆にしてみるとか・・・
補足
>> F_EigMainInp!txtKyakName2.SetFocus >ここで、エラーってことでしょうか? いいえ、MsgBox "売掛金はありません。", vbCritical, "入力エラー"を入れたらエラーになるんですが、はずせばエラーにはならないんです。 >フォーカスの移動が間に合っていないのでは? >#フォームがアクティブになっていない・・・ これはどう言うことでしょうか? また、そうだとすると、どうすればいいのでしょうか?
お礼
On Errorを全てのsubに入れ、絞って行ったところ、 全然関係ない箇所でエラーが発生していました。 なんとか解決できました、ありがとうございました。