Страницы: 1
RSS
Макрос вешает эксель (аварийное закрытие) после превышения двух добавленных строк в умной таблице.
 
Макрос из формы добавляет строку в умную таблицу ("lst_Name" состоит из 1 столбца). Данная таблица  является RowSource для комбобокса формы.
После двух добавлений (не цикл), когда в таблице есть уже две записи, при третьем запуске макроса Эксель добавляет запись в таблицу и сразу насмерть закрывается.
Макрос рабочий, т.к. первые две строчки добавляет.
На другом ПК / Экселе запускал, аналогичная проблема.

Подскажите, пожалуйста, в чем может быть проблема.

Код
Sub AddName()

   Set Sh_Catalog = ThisWorkbook.Worksheets("Каталоги")
   Set CatalogListObj = Sh_Catalog.ListObjects("lst_Name")
   Set CatalogListRow = CatalogListObj.ListRows.Add    
        
      CatalogListRow.Range(1) = frm_Basee.txb_Name.Value   
 End Sub 

Заранее благодарен.

Изменено: Oleg_BB - 09.04.2020 16:53:53
 
Цитата
Oleg_BB написал:
Данная таблица  является RowSource для чекбокса формы.
Однако...
 
А что не так, если таблица состоит из одного столбца?
 
А где вы сумели найти чекбокс, у которого есть RowSource ?
 
Извиняюсь, был неправ))) ComboBox, конечно же)))
 
Xlsb возможно ваш ответ.
 
Если не использовать умную таблицу в качестве RowSource комбобокса формы, то проблем исчезает.
НО это не решает задачу разработки и не отвечает на вопрос почему две строки добавляются без проблем, а на 3-й сроке программу вырубает.  

??
 
Решил проблему другим методом наполнения комбобоксов формы.
 
Вы бы пример прикрепили.
Вполне возможно, что создается зацикливание, когда Combobox как-то влияет на источник своего  RowSource

А вообще, если используете макросы, то зачем Вам   RowSource? Заполняйте список макросом
 
Цитата
vikttur написал:
Вполне возможно, что создается зацикливание, когда Combobox как-то влияет на источник своего  RowSource
Да, это первое, что приходило в голову. Но добавление в таблицу новой строки через переменную после закрытия формы (попытка исключить вариант обновления объекта и одновременного обращения к нему) проблему не решало . Также это не объясняет безболезненное добавление двух первых строк в таблицу, используемую в качестве RowSource. Тем не менее спасибо за комментарий.

Добавление только двух строк навевало мысль на булевую переменную, но откуда там она?? (это лишь догадки).
Цитата
vikttur написал:
Вы бы пример прикрепили.
Да, конечно.
Добавление в таблицу новых строк оставил без изменения. А вот в свойствах формы убрал указание RowSource на умную таблицу. Наполнение комбобокса же сделал через цикл и AddItem.

Код
Dim i As Long
i = 1
   Set CatalogListObj = Sh_Catalog.ListObjects("lst_Name")
   For Each CatalogListRow In CatalogListObj.ListRows
     If CatalogListRow.Range.Cells(i, 1) <> CatalogListRow.Range.Cells(i + 1, 1) Then
       Me.my_combobox.AddItem CatalogListRow.Range.Cells(i, 1)
     End If
   Next CatalogListRow

Работает.
Всем здоровья.
Изменено: Oleg_BB - 10.04.2020 13:45:23
 
Пример - это небольшая демонстрация ошибки в файле. Интересно же разобраться.
Страницы: 1
Наверх