У меня есть очень простой макрос на листе 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

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

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

2 ответа2

3

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

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

Sub Calc()
    Calculate
End Sub

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

2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .