エラー処理でエラーになる理由は?

解決


シー  2007-10-19 20:52:18  No: 137879

WindowsXP + VB6で開発しています。

On Error GoTo ErrTrap
  For i = 1 to 5
    strXXX(i) = ""
  Next i
Exit Sub 
ErrTrap:
    MessageBox.Show(Err.Description)
End Sub

このプログラムで、わざとstrXXXを配列で宣言せずにエラーにするとします。するとErrTrapに入るのですが、Err.Description自体が「オブジェクト変数または With ブロック変数が設定されていません」というエラーになり、止まってしまいます。

Err.Descriptionの使い方が間違っているのでしょうか?
よろしくお願いします。


まさ  2007-10-19 21:33:56  No: 137880

>WindowsXP + VB6で開発しています。
>MessageBox.Show(Err.Description)

矛盾しています。
VB6のメッセージボックス    MsgBox
VB2005のメッセージボックス MessageBox.Show(確かMsgBoxも使えるけど…)

VB6であれば、MessageBox.Show → MsgBox  にしてみて下さい。


シー  2007-10-19 21:36:35  No: 137881

>VB6であれば、MessageBox.Show → MsgBox  にしてみて下さい。

申し訳有りません。
質問用にコードを調整したため、このようになってしまいました。
実際はテキストログに出力しています。
msgboxでも同様なエラーがおこります。


まさ  2007-10-19 21:46:05  No: 137882

テキストログのロジックに問題がありそうな気がします。
コードが呈示できるのであれば、コードを載せて下さい。


海砂  2007-10-19 22:02:34  No: 137883

Private Sub Form_Load()
    Dim strXXX
On Error GoTo ErrTrap
    For i = 1 To 5
        strXXX(i) = ""
    Next i
    Exit Sub
ErrTrap:
    MsgBox Err.Description
End Sub

こうすると、ちゃんとErrTrapの処理が動きますので、
まささんのおっしゃるように他のロジックに問題があると思われます。


シー  2007-10-19 22:11:46  No: 137884

すばやい対応ありがとうございます。

>テキストログのロジックに問題がありそうな気がします。
ログ出力はクラスですが、クラスをcallする前にエラーになっています。

Call gclsLog.WriteLog(Date$ + " " + Time$ + " " + Err.Description)
↑これはエラーになりますが、

Call gclsLog.WriteLog(Date$ + " " + Time$)
↑これは正常に出力されます。


シー  2007-10-19 22:24:32  No: 137885

何度もすみません。
ログ出力の後に、Err.Raiseを使用しております。
その手前でエラーになっていたので、関係ないと思って省いてしまったのですが、これが原因でしょうか?

海砂さんのコードはうまくいきますが、
以下のようにすると同じエラーがでます。

Private Sub Form_Load()
    Dim strXXX
On Error GoTo ErrTrap
    For i = 1 To 5
        strXXX(i) = ""
    Next i
    Exit Sub
ErrTrap:
    MsgBox Err.Description
    Err.Raise Err.Number, "ERR", Err.Description
End Sub

お手数をお掛けして申し訳有りません。


気まぐれ  2007-10-19 22:57:11  No: 137886

>以下のようにすると同じエラーがでます。
同じエラーとは
「オブジェクト変数または With ブロック変数が設定されていません」
のことですか?

とりあえず、コードは追ってませんが、以下のことをもう一度確認してみては?
http://msdn2.microsoft.com/ja-jp/library/5szkzs17(VS.80).aspx


シー  2007-10-19 23:08:44  No: 137887

最後の私の書き込みは、勘違いでした。
すみません。

Logが書ける時と書けない時があるようですので、
この質問は一旦閉じて、もっとよく調べてみます。

皆さん、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加