Макрос из формы добавляет строку в умную таблицу ("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
Если не использовать умную таблицу в качестве RowSource комбобокса формы, то проблем исчезает. НО это не решает задачу разработки и не отвечает на вопрос почему две строки добавляются без проблем, а на 3-й сроке программу вырубает.
vikttur написал: Вполне возможно, что создается зацикливание, когда Combobox как-то влияет на источник своего RowSource
Да, это первое, что приходило в голову. Но добавление в таблицу новой строки через переменную после закрытия формы (попытка исключить вариант обновления объекта и одновременного обращения к нему) проблему не решало . Также это не объясняет безболезненное добавление двух первых строк в таблицу, используемую в качестве RowSource. Тем не менее спасибо за комментарий.
Добавление только двух строк навевало мысль на булевую переменную, но откуда там она?? (это лишь догадки).
Да, конечно. Добавление в таблицу новых строк оставил без изменения. А вот в свойствах формы убрал указание 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