|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.02.2010, 11:30 | #1 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Проблема с адресацией к элементам формы (696 элементов)
Здравствуйте, уважаемые профессионалы!
Помогите советом... При попытках адресации в рабочем режиме к элементам формы из модуля общего назначения - ошибка Excel, из модуля ComboBox_Change - ошибка сначала Дебугера и за ним - Эксела. Детали - во вложении Явно проблема в количестве Controls, может кто уже сталкивался? С уважением и надеждой, Алексей |
12.02.2010, 12:54 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Возникает ли ошибка при работе программы в Excel 2007?
Скиньте файл excel мне на почту (если нет возможности выложить его на форуме), и опишите последовательность действий (нажатий кнопок, и т.п.), приводящую к появлению этой ошибки. Адрес почты: Посмотрим, что можно сделать. |
12.02.2010, 13:52 | #3 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Спасибо, EducatedFool, бросил прогу Вам на эл. адрес
|
15.02.2010, 09:29 | #4 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Доброе утро всем, и особо - EducatedFool
Все мы Fools, но не все образованные -) Может все-таки кто-то тоже сталкивался с этим вопросом? Мне ничего не удается найти в продолжение темы по найденной ссылке http://www.pcreview.co.uk/forums/thread-3429524.php Ниже - ее перевод Я наконец констатирую! (по вопросу, изложенному ниже) Это, кажется, продолжение 177842 (см. КБ), проблемы, с которой я уже столкнулся несколько лет назад. В последней версии моего приложения я добавил прямую ссылку на некоторые элементы управления (userform.controls.name) вместо использования userform.controls.item (позиция) формы Мне удалось обеспечить совместимость для Excel 97 но... 1) На сей раз предел не 411 элементов (у меня в настоящее время их 844 в одной форме) Самый низкий tabindex элемента, который дал мне сбой - #784. Элемент #620 был адресован на тот же самый путь, но не дал сбоя 2) Ошибка не возникает при извлечении с прямой ссылкой но, кажется, возникает на установке первой позиции listindex (для comboboxes), даже если эта позиция использует ссылку controls.item !!! Мне кажется, что, поскольку в Вашем коде где-нибудь есть строка с прямой ссылкой на этот вид элемента, у Вас проблема на первой позиции listindex (вот почему мне требуется так много времени, чтобы додуматься) Фактически, у меня была проблема также и с checkbox ... на сей раз, ошибка шла из строки, использующей прямую ссылку (это была большая помощь для меня, чтобы понять) 3) Последнее, но не меньшее: первая проблема (177842) была ограничена Excel 97 и 2000. Эти аффекты - всех версий Excel (которые я знаю): Excel 2002, 2003, 2007 в режиме совместимости.... Исходный вопрос Я имею текущую проблему в приложении Excel Vba. Для 3 (из больше чем сотни) comboboxes, установка listindex прекращает работать. Это не последние три элемента в моей форме (не даже последние три comboboxes). Точнее, это работает в первый раз, после того, как я сохраняю модификацию в VBA, но не работает больше, если я сохраняю файл, выхожу из Excel и запускаюсь повторно. Все работает отлично, если отладчик включен (то есть когда я вхожу в редактор VB и ввожу пароль, который защищает мой проект). Сообщение об ошибке:-2147417848 (80010108) Метод ListIndex для объекта IMDcCombo has failed) и сопровождается крушением Excel... Если я комментирую 3 строки введенного кода, прогоны программы идут гладко, Comboboxes устанавливаются (с Методом Additem), и я могу выбрать вручную каждое значение. Проблема происходит с XL XP (Windows XP Pro), XL 2003 (Windows NT), XL 2007 (Vista) в режиме совместимости. Проблема, кажется, не происходит с новым XL формата 2007, но если я преобразовываю файл обратно в XL 2003, проблема вновь появляется! Это, кажется, не связано с дисквалифицированными ссылками Office (как описано в MS Бюллетене Q319832: я не использую в своей программе другие приложения Office, ошибка проявляется после выхода из Excel (он терпит крах), это происходит без ссылки на Библиотеку объекта Microsoft Office 11), Я провел много времени, чтобы попытаться найти (причину), но без успеха... Если у кого - то будет идея, то я буду пробовать! Спасибо М.б. у Microsoft есть какие-нить пояснения или заплатки? С уважением |
16.02.2010, 15:36 | #5 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Здравствуйте, уважаемые коллеги!
Придется продолжить в условиях всеобщего молчания Может кого заинтересует, что говорит Microsoft? Комментарии в базе данных Microsoft http://support.microsoft.com/kb/177842/ Article ID: 177842 - Last Review: January 22, 2007 - Revision: 4.4 (This article was previously published under Q177842) OFF97: Invalid Page Fault with More Than 411 Controls in UserForm Когда у UserForm есть более 411 элементов и любые элементы, добавленные после 411-го адресуются непосредственно по имени в Microsoft Visual Basic for Applications макросе или процедура (например, UserForm1. Label412), Вы получаете одно из следующих сообщений об ошибке. (указаны варианты сообщений только для Excel Win95 и NT) Это происходит в случаях: * В UserForm созданы более 411 элементов любого типа * Элементы, созданные после 411-ого, адресуются непосредственно по имени (например, UserForm1. Label412) в макросе Visual Basic или процедуре. Элементы вне 411-ого должны адресоваться, как члены коллекции Controls вместо адресации непосредственно по имени. Вы можете использовать один из следующих методов для решения проблемы. Метод 1: Используя конструкции For Each...Next Обратитесь к требуемому элементу, используя коллекцию Controls и конструкции For Each...Next. Следующий пример подпрограммы демонстрирует этот метод: Sub Change_Caption() For each myControl in UserForm1.Controls x = x + 1 myControl.Caption = x Next End Sub Метод 2: Используя Метод Item Используйте метод Item с номером индекса, как показано в следующих примерах: UserForm1.Controls.Item(411).Captio n = "joe" UserForm1.Controls(411).Caption = "joe" UserForm1.Controls("Label411").Capt ion = "joe" Примечание: индекс начинается с 0 Microsoft подтвердила, что эта проблема имеется в упомянутых выше продуктах (Win 95, NT). Мы исследуем эту проблему и разместим новую информацию здесь, в Microsoft Knowledge Base, как только она появится. Удаление элемента с номером TabIndex меньшим, чем 411 позволяют адресацию по имени к следующему элементу (выше предыдущих 410) без ошибки, но тогда ошибка происходит на элементе, который становится 411-ым после удаления. Изменение TabIndex или TabOrder элемента не изменяет поведение; поведение, кажется, полностью определено порядком, в котором элементы были созданы. С использованием этих рекомендаций для всех Controls, кроме OptionButton, от сбоев удалось избавиться. В OptionButton даже с номерами меньшими 411 (например, с номером 295), Value категорически не хочет устанавливаться в True, хотя текущее значение Value читается, устанавливаются все прочие свойства, в т.ч. Value=False. Пробовал все без исключения рекомендованные варианты! Выскакивает сообщение vb с тем же номером, но с иным объектом (см. ниже) и сразу - крах Excel. В общем, приехал… Run-time error ‘-2147417848 (80010108)’: Method ‘Value’ of object ‘IMdcOptionButton’ failed |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с многоуровневой адресацией | grook | Общие вопросы C/C++ | 3 | 18.12.2010 17:15 |
Visual C++.Доступ к элементам главной формы | almareta | Помощь студентам | 2 | 13.02.2010 14:26 |
Вопросы по GetOpenFilename и элементам формы Excel!!! | Klim Bassenger | Microsoft Office Excel | 13 | 28.01.2010 23:22 |
Элемент формы <input type="image"... не находится в коллекции элементов формы? | euroflock | Работа с сетью в Delphi | 1 | 01.09.2009 16:17 |
Динамическое обращение к элементам формы. | Dennis | Microsoft Office Excel | 2 | 17.03.2009 12:55 |