2009-03-25 22 views
8

MS Access 2003のVBAでCallStackが表示されますか?つまり、procedureまたはfunctionから別のfunctionが呼び出されたことが分かりますか?コールスタックの検査方法

+0

これは、ASMが適しているタスクの1つです。 – pyon

答えて

3

私が知っているコールスタックを表示するには、VBAではプログラミング方法がありません。この問題の通常の解決策は、関数の呼び出しを追跡するためにいくつかの構造体を使用することですが、いつも私のようなものであり、プログラミング時(実行時ではない)にのみ実際に使用されるようです。コールスタックを見るためのビルトイン機能で十分です。

そして、私はいつもVBEツールバーにコールスタックボタンを置いています。なぜなら、これは私にとって最も頻繁に使用される機能の1つなのでです。私はコンパイルボタンも追加します - コンパイルを強制することなくコードを書くことを奨励するので、デフォルトでツールバーにはないのは夢中です。 Access 2000では、Option Explicitをデフォルトで使用していませんでした(VBEを使用している他のアプリケーションとの一貫性のために、言い換えれば、Code Examではないアプリケーションと一貫性を持たせるために、ヘビー)。

しかし、私は脱線...結局

9

実行時に、表示メニュー - >コールスタック(またはCTRL + Lを押す)。

2

、あなたの関数にオプションのパラメータを追加し、発信者の名前をそのように渡します。フォームの場合は、Me.Nameをパラメータとして使用できます。

0

はい、可能ですが、それほど有用ではありません。使用GetCallStackCountとGetCallStackFunctionコールSETMODE前

Private Declare Sub SetMode Lib "vba332.dll" Alias "EbSetMode" (ByVal lngMode As Long) 
Private Declare Function GetCallStackCount Lib "vba332.dll" Alias "EbGetCallstackCount" (lngCount As Long) As Long 
Private Declare Function GetCallStackFunction Lib "vba332.dll" Alias "EbGetCallstackFunction" (ByVal Lvl As Long, ByRef strBase As String, ByRef strModule As String, ByRef strFunction As String, ByRef Done As Long) As Long 

(2)、及びSETMODE(1)の後。