Страницы: 1
RSS
Проблема с файлом: Разрушительный сбой, Automation Error
 
Ошибка: Разрушительный сбой Automation Error
Проблема наверняка кроется в следующем коде:
Код
''''''''''''в Кгига1:
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
   Set s = Sh
End Sub

''''''''''''в Модуль:
Public s As Worksheet
Sub Back()
  s.Activate
End Sub
Этот макрос, при выполнении возвращает на прошлую страницу (то есть как кнопка "Назад"). Очень привык к этому макросу, хотя и раньше он мне конкретно гробил книгу без возможности восстановления.
Но на этот раз я наблюдаю нечто новое, книга продолжает работать.
Макрос  Назад работать не хочет: Run-time Error91, Object variable or With block variable not set. Ошибка указывется на:   s.Activate[/P] В VBA, в списке листов я заметил множество непонятных книг(?), таких нет в моей прошлой резервной копии файла:

Увы приложить пример не могу, т.к. меня пугают эти самые неудаляемые книги/листы (Лист 1, 10 и т.п.)

Вопросы в том:
1. Откуда взялись эти листы? Как их удалить?
2. Что не так с макросом, почему он периодически крашится.

Еще раз извиняюсь, что не могу приложить сам файл, надеюсь на какую-то помощь, советы. Спасибо.
 
У меня тоже случилось подобное, когда при написании проекта допустил грубую ошибку - два одинаковых названия процедур (копировал часть и забыл переименовать).
Не утверждаю, что ошибка возможна только из-за этого. Только как пример. Такие файлы встречал не раз. Сбой внутренней структуры файла.

По Вашему огрызку проекта все нормально: при деактивации листа в переменную заносится лист. При выполнении отдельной процедуры лист активируется. Что и как происходит между этими событиями,  что такое Sh - непонятно... И почему Вы не пишете, что тип переменной Sh - лист? Понято, что и так можно, но вдруг подсовываете листу книгу или таблицу?
 
Макрос Back нужно записать аккуратнее, учитывая вероятность сброса проекта (например, в случае ошибки).
Код
Public s As Worksheet
Sub Back()
    If Not s Is Nothing Then
        s.Activate
    End If
End Sub
Владимир
 
Цитата
vikttur написал:
Что и как происходит между этими событиями,  что такое Sh - непонятно... И почему Вы не пишете, что тип переменной Sh - лист? Понято, что и так можно, но вдруг подсовываете листу книгу или таблицу?
Это не мой код. Как и что там работает для меня не понятно. Буду предложениям, если есть возможность его улучшить (в плане исключения ошибок).

По вопросу дублирования листов, нашел уже существующую тему, http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=67359&MID=s , решить проблему там так и не удалось. Потому для себя решил восстановить резервную копию файла, до этой проблемы и работать с ней, чтобы избежать возможных побочных проблем в будущем.  
Страницы: 1
Читают тему
Наверх