プロシージャ名を取得するには

解決


ジム  2004-10-16 03:16:40  No: 117007

現在実行中のプロシージャ名を取得するにはどうしたらいいのでしょうか?
エラーログに問題のあったプロシージャ名があればトラブルシュートに非常に有効
なんですが、どなたか知っていたら教えて下さい。ちなみにVB6を使用しております。


ささ  2004-10-16 03:20:17  No: 117008

何も考えずに、コーディングすのるのあれば
グローバル変数をひとつ用意して、頭でプロシージャ名を格納してください。


特攻隊長まるるう  2004-10-16 04:10:17  No: 117009

ちなみに過去ログ検索『プロシージャ名』
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200405/04050057.txt


いな  2004-10-16 04:49:20  No: 117010

自分の場合はエラーログの時

Sub Form_load()

On Error GoTo hogehoge_Err

Exit Sub
hogehoge_Err:
 Debug.Print "Form_Load" & Err.Number
End Sub

とやっちゃうな、


いな  2004-10-16 04:57:35  No: 117011

途中で送信を推してしまいました。

カレントプロシージャ名を取得したい
では何の目的か、分からないので
あんな力技の回答ぐらいしか出来ませんが

『エラーログ』で何処のプロシージャで落ちているか知りたい…。
だと回答の仕方も随分勝手がちがうものです。


ねろ  2004-10-16 17:23:07  No: 117012

>グローバル変数をひとつ用意して、頭でプロシージャ名を格納してください。
ローカル変数の方がいいんじゃないかな。

プロジェクトの中の「.Bas」や「.frm」の拡張子の付いたファイルを
読み込み、「Private Sub」や「Public Sub」のキーワードを探して
その次の行に
Dim CurrentSubPos as String
CurrentSubPos = "Private Sub Form_Load" 
なんてのを自動挿入する簡単なプログラムを作ると面白いかも。
「 _」の改行と2重挿入だけ注意すれば、簡単に作れると思うけど。
ついでに
On Error GoTo hogehoge_Err や
hogehoge_Err:
   Debug.Print CurrentSubPos & ":" & Err.Number
も挿入しちゃうとか。


葉月  2004-10-18 22:00:28  No: 117013

自分も、さささんのようにグローバルに入れる形式取りました
入れ子状態で、どの順でプロシージャを読んだのかも出力するため

Public A As String

Private Sub ●●●●プロシージャ()
    Dim B As String

On Error Goto ErrHandler
    
    B = A
    A = A & ">●●●●プロシージャ()"
    
    〜  処  理  〜
    
    A = B
    Exit Sub

ErrHandler:
    MsgBox(A)
    
End Sub

上の形を雛型として作成しておき
使うたびに">●●●●プロシージャ()"の部分を書き換えてます
ここからさらにプロシージャが呼ばれれば、プロシージャ名の連結でトレースも楽になるかと・・・
もちろん変数名はAやBなんかじゃないですけどね・・・
あと、このプロシージャの親プロシージャ以上でエラートラップしたいときにも使えると思いますし


ジム  2004-10-26 02:01:14  No: 117014

どうも自動的に取得する方法はなさそうですね。外部変数を使ってプロシージャ名を格納するようにします。回答ありがとうございました。


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




  


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