Ошибка VBA: недостаточно места в стеке

Ошибка VBA: недостаточно места в стеке

У меня есть очень простой макрос в таблице Excel, позволяющий пользователям выполнять пересчет.

У меня нет других макросов/кода в рабочей книге, открыта только эта рабочая книга

Sub Calculate()
    Calculate
End Sub

Активируется кнопкой.

Однако при нажатии появляются два окна с ошибками, см. изображение.

Что это значит Out of stack space mean? И как решить эту проблему? введите описание изображения здесь

Я посмотрел на этом сайте:

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/out-of-stack-space-error-28

Он говорит, что у меня, возможно, слишком много функций? Этот макрос раньше работал нормально, но сейчас он почти ничего не делает, поэтому не могу понять, в чем проблема.

Я могу рассчитать лист, используя опцию на вкладке формул.

решение1

Функция, которую вы определили, является рекурсивной и вызывает себя безусловно, пока стек не будет заполнен всеми вызовами.

Вам следует изменить имя вашей подпрограммы, например:-

Sub Calc()
    Calculate
End Sub

Если вы ссылаетесь Calc()на кнопку, вы избегаете какой-либо рекурсии.

решение2

Вы вызываете Calculate внутри Calculate. Каждый вызов Calculate вызывает другой вызов Calculate, который затем вызовет Calculate... И в конце концов вы получите эту ошибку, когда стек заполнится.

Связанный контент