Вопрос

Было бы возможно увидеть CallStack в VBA для MS Access 2003?То есть, можно ли было бы увидеть, из чего procedure или function другой function был вызван?

Это было полезно?

Решение

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

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

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

Другие советы

Во время выполнения просмотрите меню -> Стек вызовов (или нажмите 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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top