
У меня есть очень простой макрос в таблице Excel, позволяющий пользователям выполнять пересчет.
У меня нет других макросов/кода в рабочей книге, открыта только эта рабочая книга
Sub Calculate()
Calculate
End Sub
Активируется кнопкой.
Однако при нажатии появляются два окна с ошибками, см. изображение.
Что это значит Out of stack space mean
? И как решить эту проблему?
Я посмотрел на этом сайте:
Он говорит, что у меня, возможно, слишком много функций? Этот макрос раньше работал нормально, но сейчас он почти ничего не делает, поэтому не могу понять, в чем проблема.
Я могу рассчитать лист, используя опцию на вкладке формул.
решение1
Функция, которую вы определили, является рекурсивной и вызывает себя безусловно, пока стек не будет заполнен всеми вызовами.
Вам следует изменить имя вашей подпрограммы, например:-
Sub Calc()
Calculate
End Sub
Если вы ссылаетесь Calc()
на кнопку, вы избегаете какой-либо рекурсии.
решение2
Вы вызываете Calculate внутри Calculate. Каждый вызов Calculate вызывает другой вызов Calculate, который затем вызовет Calculate... И в конце концов вы получите эту ошибку, когда стек заполнится.