コールスタックを検査する方法
-
22-08-2019 - |
質問
MS Access 2003のためにVBAでCallStack
を見ることは可能でしょうか?それは何procedure
から参照するか、別のfunction
をfunction
することが可能であろう、と言うことですが呼ばれたのですか?
解決
私の知っているコールスタックを表示するには、VBAにはプログラムによる方法はありません。それはVBEのように私には思われる場合には(ない実行時に)プログラミングのみの機能の呼び出しを追跡するために、いくつかの構造を使用することですが、それは常に私にはその場しのぎのように思えるし、実際に使用のこの問題に対する通常の解決策、コールスタックを見るための組み込み機能は十分です。
そして、それは私のために最も頻繁に使用される機能の一つだからところで、私はいつも、私のVBEツールバーのコールスタックのボタンを配置。私はまた、コンパイルボタンを追加します - 私はそれはそれは今までにコンパイルを強制することなくコードに人々を奨励するので、それは、デフォルトでは、ツールバーのないことをクレイジーだと思います。ほとんどコード - など、他の言葉では、ありませんアプリケーションと、それは一貫させるためにはダムダウンアクセス - その後、再び、Access 2000がさえたぶんVBEを使用して他のアプリとの一貫性を保つために(デフォルトでは明示的なオプションを使用していませんでした重い)。
しかし、私は脱線...
他のヒント
実行時には、[表示]メニュー - > [コールスタック(またはCtrlキーを押しながら+のL)
。結局、あなたの関数にオプションのパラメータを追加し、呼び出し側がそのように名前を渡します。フォームの場合、あなたは、パラメータとしてMe.Name
を使用することができます。
はい、それは可能だが、それは非常に便利ではありません!
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
使用GetCallStackCountとGetCallStackFunctionコールSETMODE前に(2)、及びSETMODE後に(1)。