Страницы: 1
RSS
Ошибка наполнения динамического диапазона для Combobox, method _default of object range failed
 
Здравствуйте. Делаю для себя удобную форму списания гсм, но в процессе разработки столкнулся с ошибкой.
Форма накапливает введенные ранее адреса, чтобы в дальнейшем их использовать. Но есть одно но...
Ввод новых адресов с накоплением происходит до одного момента, затем происходит ошибка " runtime error -2147417848 80010108 method _default of object range failed" с аварийным выходом из Excel.
Умные головы, помогите, пожалуйста, разобраться в этом вопросе.
 
Цитата
trovial написал: происходит до одного момента
И что за 'момент'? На какой строке кода возникает ошибка?
Согласие есть продукт при полном непротивлении сторон
 
Ошибка возникает в обработке следующей команды:
Код
Private Sub ComboBox000_AfterUpdate()

                        If WorksheetFunction.CountIf(Range("Таблица3"), Me.ComboBox000) = 0 Then

                                Range("Таблица3").Cells(Range("Таблица3").Rows.Count + 1, 1) = Me.ComboBox000

                                Call UserForm_Activate

                            Else

                            End If

                        End Sub
Ошибка не привязана к определенному комбобоксу. По моим наблюдениям, возникает на 8-м новом значении, записываемом в диапазон в пределах  одного заполнения
Изменено: trovial - 11.04.2018 08:05:32
 
Мой алгоритм действий:
1) Открыл Вашу программу
2) Покликал комбобоксы, кнопки
2) Не увидел ошибки
4) Закрыл Вашу программу
5) Пошел пить кофе

Если хотите получить конкретный ответ, приведите конкретный пример возникновения ошибки.
Никто не собирается вникать в сакральную суть вашей программы, поэтому экономьте время других - распишите алгоритм появления ошибки, как полагается по пунктам.
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
Цитата
ProFessor написал:
приведите конкретный пример возникновения ошибки
Привожу.
1. Открываем форму.
2. Переходим на вкладку "Страница 2"
3. Вводим в Combobox уникальное значение.
4. Повторяем пункт 3 восемь раз.
5. Ловим ошибку.
 
Причина ошибки непонятна. Дело не в восьмом значении. Включи форму, кликни на комбобокс, впиши что-нибудь.
Закрой форму, открой её, опять кликни на этот комбобокс и впиши что-нибудь. 2 действия, а ломается.
Так материться в коде нельзя, перепишите через cells() и всё заработает. Старайся игнорировать Range и уделять внимание Cells и таких проблем не будет.

Вот это зло:
Код
Range("Таблица3").Cells(Range("Таблица3").Rows.Count + 1, 1) 


Измени на подобное в рамках своих значений:
Код
Thisworkbook.sheets("Лист1").cells(x,y)
Изменено: ProFessor - 12.04.2018 11:47:25
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
Цитата
ProFessor написал:
Старайся игнорировать Range
а как указать диапазон только через Cells, в обход Range? Мне не хватает знаний :(  
 
Я бы сделал так:
1) Есть лист с перечнем значений для комбобокса (обычно он скрытый)
2) Я добавляю каждое  из этих значений всем комбобокксам при инициализации формы
3) При событие change в комбобоксе, добавляю значение на лист

Вот так можно добавлять значения в комбобокс по 1-му:

Код
Private Sub ComboBox1_AfterUpdate()
i = 1
Do While ThisWorkbook.Sheets(1).Cells(i, 1) <> ""
     i = i + 1
Loop
ThisWorkbook.Sheets(1).Cells(i, 1) = ComboBox1.Value
End Sub

Private Sub UserForm_Initialize()
i = 1
Do While ThisWorkbook.Sheets(1).Cells(i, 1) <> ""
    ComboBox1.AddItem ThisWorkbook.Sheets(1).Cells(i, 1)
i = i + 1
Loop
End Sub
Изменено: ProFessor - 12.04.2018 11:47:03
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
ProFessor, доброго дня. По правилам форума формулы/код в сообщениях нужно оформлять тегом CODE. Это делается при помощи кнопки <..> на панели редактирования сообщений в форме ответов. А то придут модераторы и все равно заставят. Не хочется чтобы дельные советы пропадали из-за некорректного оформления.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
По правилам форума формулы/код в сообщениях нужно оформлять тегом CODE
Благодарю, догадывался об этом, но не понял, что означает символ <...>
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
ProFessor, спасибо большое!!!!
Ваш код работает!!! (вот только значения дублируются :( )
Страницы: 1
Наверх