Проблема У меня есть файл 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
Некоторые идеи?
Debug.Assert
в начале функции B, чтобы поймать недопустимое значение, а затем пропустить конец функции, чтобы увидеть, откуда она была вызвана? (например,Debug.Assert Deliminator > 0
для ошибки деления на ноль) - person Chronocidal   schedule 13.03.2019