Ошибка выполнения: «Недостаточно памяти» из макроса Excel - PullRequest
0 голосов
/ 09 июня 2010

У меня есть один макрос, который вызывается, когда происходит смена ячейки. Этот макрос выбирает изображения, удаляет их и вставляет другое изображение в зависимости от значения ячейки, используя следующий код. У меня одинаковый код для двух листов.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveSheet.Shapes.SelectAll
    Selection.Delete
    'insert image code here.
End Sub

На одном листе он отлично работает и удаляет все изображения, а на другом листе выдает ошибку времени выполнения «Недостаточно памяти» и выделяет следующую строку:

 ActiveSheet.Shapes.SelectAll

Может кто-нибудь сказать мне, почему это происходит? Он отлично работает в одном, а не в другом.

Еще одна вещь, которую я хочу вам сказать, это то, что она работала нормально, когда я передавал этот макрос Excel моему клиенту; оба листа работали нормально. Внезапно через 2 дня он начал получать ошибку на одном листе, над которым много работал.

Я не знаю, почему это происходит. Может кто-нибудь сказать мне, в чем причина этого и как я могу решить это?

1 Ответ

1 голос
/ 04 февраля 2011

Можете ли вы предоставить свой код вставки изображения?Если вы сами изменяете текущий выбор в этом коде, то эта процедура будет вызываться бесконечно.Следует рассмотреть возможность отключения событий при обработке этого обработчика событий согласно следующему коду:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
        ' do something
    Application.EnableEvents = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...