Выяснение, какая функция вызывает другую функцию в VBA Excel - PullRequest
0 голосов
/ 13 марта 2019

Проблема У меня есть файл Excel с довольно сложным кодом VBA, и у меня возникли проблемы с отслеживанием и отладкой ошибок. Иногда функция B получает значение, которое она не должна получить, и вылетает, но в этот момент я не могу знать, какая другая функция вызвала эту функцию B, и процесс anylys для ее обнаружения занимает очень много времени.

Мое решение Решением может быть преобразование всех функций, которые я имею, следующим образом:

Sub foo1(variable1 as string)
    'do whatever
End Sub

в

Sub foo1(variable1 as string, inforvariable as string)
    'do whatever
End Sub

Infovariable - имя вызывающей функции. Это, очевидно, очень много времени (рефакторинг всего). Кроме того, я не знаю ни как получить доступ к имени "sub" функции вызова кода, что-то вроде:

infovariable = self.name
call foo1(variable1, inforvariable)

В VBA не существует

Некоторые идеи?

Я смотрю здесь , здесь , а здесь

1 Ответ

1 голос
/ 13 марта 2019

Отладьте ваш макрос, поместите точку останова в строку с проблемой (в случае, если строка вызывается слишком часто, добавьте условие только для прерывания при этом условии) и просмотрите стек вызовов (сочетание клавиш Ctrl+L).

...