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の使い方が間違っているのでしょうか?
よろしくお願いします。
>WindowsXP + VB6で開発しています。
>MessageBox.Show(Err.Description)
矛盾しています。
VB6のメッセージボックス MsgBox
VB2005のメッセージボックス MessageBox.Show(確かMsgBoxも使えるけど…)
VB6であれば、MessageBox.Show → MsgBox にしてみて下さい。
>VB6であれば、MessageBox.Show → MsgBox にしてみて下さい。
申し訳有りません。
質問用にコードを調整したため、このようになってしまいました。
実際はテキストログに出力しています。
msgboxでも同様なエラーがおこります。
テキストログのロジックに問題がありそうな気がします。
コードが呈示できるのであれば、コードを載せて下さい。
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の処理が動きますので、
まささんのおっしゃるように他のロジックに問題があると思われます。
すばやい対応ありがとうございます。
>テキストログのロジックに問題がありそうな気がします。
ログ出力はクラスですが、クラスをcallする前にエラーになっています。
Call gclsLog.WriteLog(Date$ + " " + Time$ + " " + Err.Description)
↑これはエラーになりますが、
Call gclsLog.WriteLog(Date$ + " " + Time$)
↑これは正常に出力されます。
何度もすみません。
ログ出力の後に、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
お手数をお掛けして申し訳有りません。
>以下のようにすると同じエラーがでます。
同じエラーとは
「オブジェクト変数または With ブロック変数が設定されていません」
のことですか?
とりあえず、コードは追ってませんが、以下のことをもう一度確認してみては?
http://msdn2.microsoft.com/ja-jp/library/5szkzs17(VS.80).aspx
最後の私の書き込みは、勘違いでした。
すみません。
Logが書ける時と書けない時があるようですので、
この質問は一旦閉じて、もっとよく調べてみます。
皆さん、ありがとうございました。
ツイート | ![]() |