2015-09-26 1 views
0

Все,Run-Time ошибка '32809': Application или объекта определенные ошибки

Я просто повышен до Excel 2013 и бегу в странный вопрос. У меня есть рабочая книга с поддержкой макросов, которая успешно работает уже довольно давно. Я обновлял часть кода и наткнулся на эту ошибку (32809) при попытке записать на конкретный листок. При поиске и устранении неисправностей я попробовал это.

Sheets("Summary").Range("G8").Value = "Test"

Это привело к той же ошибки. Тогда я попробовал это.

Debug.Print ActiveSheet.Name

же ошибка. Поэтому я выбрал другой лист в книге и debug.print для имени. Отлично.

Тогда я попробовал это.

Debug.Print Sheets(2).Name (Это лист номер problemic листа)

То же ошибка. Мне кажется, что с этим листом есть какая-то форма коррупции, но я сдержанно об удалении и воссоздании. Какие-либо предложения?

Спасибо!

+0

Привет и добро пожаловать Грег. Если вы получаете доступ к листу по его названию (имя, которое вы ожидаете увидеть напечатанным), вместо листов (2), что происходит? –

+0

О, я вижу, это имя должно быть «Резюме», но оно как бы искажено. –

+0

Прежде чем переписать книгу, перезагрузите компьютер и повторите попытку. Окружающая среда VBA может стать нестабильной после сбоев в программировании. – Jeeped

ответ

2

Хотя это было не идеальное решение, вот как я, наконец, решил это. У меня был пользователь, который все еще в Excel 2010 сделал копию коррумпированного листа в одной книге, удалил поврежденный лист, а затем переименовал новый лист в исходное имя. Тогда я смог использовать книгу в Excel 2013 без проблем.

1

У меня есть Workbook Открыть макрос, который подсчитывает количество строк в таблице на открытии, так что я могу подвести итог, как были добавлены или удалены много записей во время ввода данных сессии:

Private Sub Workbook_Open() 
    Dim TotalRows As Integer 
    TotalRows = Worksheets("Data").ListObjects(1).ListRows.Count 
    If Range("LastRecordOnStart") <> TotalRows Then Range("LastRecordOnStart") = TotalRows 
' Stop 
End Sub 

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

TotalRows = Worksheets("Data").ListObjects(1).ListRows.Count 

Перезагрузка или открытия книги на другой компьютер все равно не исправить. Даже открытие ранее сохраненной рабочей копии даст ту же ошибку - странно. Примечание:

Во время кодирования я периодически буду сохранять книгу и использовать проводник Windows для копирования моментального снимка книги, где он создает копию моей работы (1) .xlsm, copy (2) .xlsm и т. Д., И если я получу поврежденная книга, я переименую ее myworkbook.bad.xlsm и переименую последнюю сохраненную рабочую версию (например, копия моей работы (6) .xlsm в MyWorkbook.xlsm с минимальными потерями.

Когда эта ошибка во время выполнения происходит, мне приходилось перестраивать книгу несколько раз. Это происходит только тогда, когда рабочая книга падает после долгого сеанса отладки нового кода с помощью Userform open, и мне нужно закрыть Excel из диспетчера задач.

Я читал сообщения здесь сегодня и был убежден, что это была страница, связанная, когда я мог перечислить количество списков на другом листе, и если бы я преобразовал Listobject на листе «Данные» обратно в диапазон и воссоздал таблицу, я 'd все еще получить ошибку времени выполнения. Чтобы вырезать Короче говоря, я попробовал следующее:

  1. Открыть учебное пособие
  2. Когда ошибка выскочила, щелкнул отлаживать
  3. правой нажал на строке «End Sub» переводника Workbook_Open и нажал «Установить следующий оператор»
  4. прессованная F5, чтобы код, чтобы закончить выполнение
  5. Сохраненный книгу, и все это работает сейчас!

У меня был еще один сбой с последующей ошибкой во время выполнения и повторил шаги выше, и это снова заработало шарм.