2009-03-25 9 views

ответ

3

В VBA нет программного способа для просмотра стека вызовов, о котором я знаю. Обычным решением этой проблемы является использование некоторой структуры для отслеживания вызова функций, но она всегда кажется мне клопом и действительно используется только при программировании (не во время выполнения), и в этом случае мне кажется, что VBE достаточно встроенной возможности просмотра стека вызовов.

И, BTW, я всегда ставил кнопку стека вызовов на панели инструментов VBE, так как это одна из наиболее часто используемых функций для меня. Я также добавляю кнопку компиляции - я думаю, что это ненормально, что она не находится на панели инструментов по умолчанию, потому что она побуждает людей кодировать, не заставляя компиляцию. Опять же, Access 2000 даже не использовал Option Explicit по умолчанию (предположительно, для согласованности с другими приложениями с использованием VBE - другими словами, Dumb Down Access, чтобы сделать его совместимым с приложениями, которые не похожи на код, тяжелый).

Но я отвлекся ...

9

Во время выполнения меню «Вид» -> «Стек вызовов» (или нажмите CTRL + L).

2

В конце концов, добавить дополнительный параметр к вашей функции, и передать имя вызывающего абонента таким образом. Для форм вы можете использовать Me.Name в качестве параметра.

0

Да, это возможно, НО это не очень полезно!

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).

 Смежные вопросы

  • Нет связанных вопросов^_^