[[20070129095941]] 『VBA エラー行数の取得』(Hoy) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA エラー行数の取得』(Hoy)

 もしあれば教えていただきたいのですが、
 VBAでエラーが発生しデバックすると黄色くなってますが、
 その行番号を取得し、書き込む事は可能でしょうか?
 説明が下手でスイマセン、分かりますでしょうか?

 内容が分かりません。
 目的を書いていただけると分かりやすくなると思いますよ。

 上の説明にしても行番号とありますが、何の行番号でしょうか?
 VBAのコードの行番号ですか?コードに行番号はありません。

 >その行番号を取得し、書き込む事は可能でしょうか?
 どこに書き込むのでしょうか?
 (やっちん)


 (やっちん)さんありがとうございます。
 目的は、毎日同じ時間にエクセルのマクロを
 実行させているのですが、エラーが発生した際、
 エクセルを終了させ、新規テキストファイルを作り、
 ファイル名に日時や異常終了等のコメントを入れています。
 (いくつかのファイルを5分ごとに実行させているため)
 なので朝見て、未処理なことは分かるのですが、どこでつまづいたかを
 知りたいのです。現在は一行ごとに確認しているのですが、
 もしコードの何行目でエラー処理に回ったかをファイル名に残せれば、
 修正する時間が短くなると思い。質問しました。

 行番号ではなく、何行目・何桁を表示するものがありますが、
 その何行目かです・・・。スイマセン
 (Hoy)


 私が同じことをするとしたらログを書き出すか、どこまで
 処理が進んでいるかを変数に格納してエラー処理で出力す
 ることぐらいでしょうか。

 後者のサンプルです。
 Sub Test()
    Dim ShoriCD As Long
    Dim i As Long
    On Error GoTo ERR_SHORI

    ShoriCD = 1
    '処理1

    ShoriCD = 2
    For i = 1 To 100
        '処理2
    Next i

    ShoriCD = 3
    '処理3
    Exit Sub
 ERR_SHORI:
    Select Case ShoriCD
        Case 2
            MsgBox "処理CD:" & ShoriCD & ",i=" & i
        Case Else
            MsgBox "処理CD:" & ShoriCD
    End Select
 End Sub
 (やっちん)


 (やっちん)さん、ありがとうございます。
 やはりどこかに番号をつけるということですね。
 VBAのツールバーのところに行と桁が表示されているので、
 それなんかを取得できないかな?とおもったのですが・・・
 上記の方法でやってみます。
 ありがとうございました。
 (Hoy)

 > VBAのツールバーのところに行と桁が表示されているので
 私は見たことないのですが、どうやったら表示されるのでしょうか?
 よかったら教えてください。
 (やっちん)


 どうやるというか、
 編集している時に、カーソルのある位置が何行目で何桁目かが
 上のツールバーの所に表示されているのですが・・・
 (Hoy)


 使われているコードがどのようなものか不明ですが、
 エラーが出そうな場所の各上の行に
Application.VBE.CodePanes(1).GetSelection m, n, x, y
を入れておき
エラー時の処理を上記のmを変数として使えば可能かも・・・?
 
Dim m As Long
Dim n As Long
Dim x As Long
Dim y As Long で変数を定義しておくことをお忘れなく

 (川野鮎太郎)


 面白そうだったので実験してみました。
 結果は、実行前のカーソル位置を返してきました。
 エラーをトラップするとカーソル位置がエラー箇所に変更されないのでしょうがないですね。
 (やっちん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.