|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.12.2015, 20:08 | #1 |
Новичок
Джуниор
Регистрация: 07.12.2015
Сообщений: 1
|
Как отловить ошибку "5941: Запрашиваемый номер семейства не существует"?
Предыстория:
Нужно было написать макрос, который сравнивает выбранные столбцы в разных таблицах, для этого он считывает в выбранных таблицах первые ячейки столбцов как их названия для последующего выбора. При этом я случайно создал таблицу в таблице, дважды выполнив макрос, аналогичный первому в примере. После чего также случайно выбрал полученную таблицу в качестве источника. В результате получил ошибку "5941: Запрашиваемый номер семейства не существует". Справка по выбранной ошибке выбрасывает на стартовую страницу справочной системы, то есть не проливает никакого света на причину и методы устранения ошибки. Вообще, справка в Word и VBA в частности такая убогая, что даже после часа копания в ней я не нашел ответов на поставленные вопросы. Специально для наглядности выложил отчет браузера объектной модели, примерный вид полученной таблицы и фрагмент программы (не оригинальный) вызывающий ошибку. На картинке явно видно, что в первом столбце второй таблицы три ячейки, но объектов ячеек там нет. Первая таблица приведена для наглядности, в ней видны три ячейки в первом столбце Вопрос делится на два варианта: 1. Какие свойства таблицы отвечают за ее нестандартность, в частности отсутствие в ее столбцах ячеек? Чтобы выявить глючную таблицу сразу. Сравнивая полученные таблицы я таких свойств не нашел. 2. Как отловить ошибку если она уже случилась? Команды IsError, IsMissing, IsEmpty, IsNull не работают, так как выполнение прерывается до них. Какие еще есть команды для проверки ошибок я не нашел. Сразу скажу, можно прочитать ячейки из первой строки таблицы, примерно так MsgBox ActiveWindow.Document.Tables(2).Row s(1).Cells(i).Range.Text но меня интересуют данные в столбцах, так что ошибка все равно вылезет позже. Так же, если в первую ячейку добавить хотя бы строку, ошибка исчезает, но надо исключить принципиальную возможность ошибки, учитывая что она уже найдена. Последний раз редактировалось Omu; 07.12.2015 в 20:12. |
10.12.2015, 05:00 | #2 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
Таких свойств нет. Можно проверить наличие объединенных ячеек, отловив ошибку при обращении к Table.Columns(1) или Table.Rows(1). Нестандартность же, то есть любые изменения структуры таблицы, отловить ну очень проблематично. Простейший пример в таблице ниже, где нет объединенных ячеек, а есть просто сдвиг или изменение размеров отдельных строк:
Про таблицы Word надо понимать, что столбцов там как бы нет. В том смысле, что точно известны только номер строки ячейки и порядковый номер ячейки в этой строке. Последний никак не номер столбца, ибо визуально ячейка может находится в любом месте. Читаем про "On Error".
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" | Alexsandrr | Microsoft Office Excel | 4 | 19.10.2013 14:22 |
Как отловить сообщение от WM_CLOSE от "крестика"? | graveman | Win Api | 3 | 01.10.2012 16:22 |
Как называется программа "дозвон по модему на указаный номер" | hardhawker | Софт | 3 | 27.12.2011 14:30 |
Как обойти "преобразование типа из "string" в "float" невозможно" | lexluter1988 | Помощь студентам | 1 | 07.08.2010 12:23 |
TRichViewEdit - как отловить событие "курсор над таблицей" | chandrasecar | Компоненты Delphi | 0 | 05.04.2009 20:04 |