У меня есть wb с несколькими листами, каждый из которых имеет две таблицы (списки объектов). У меня также есть пользовательская форма, которая позволяет пользователю добавлять, редактировать, удалять строки из таблиц. Эти таблицы являются статическими, что означает, что они всегда присутствуют и никогда не удаляются, они расположены в одном месте и никогда не перемещаются. Я также ссылался на эти объекты по-разному, по индексу или по имени, чтобы понять, имеет ли это значение.
Иногда, когда пользователь выполняет добавление, редактирование или удаление в любой таблице, я получаю ошибку 1004 во время выполнения. Не знаю почему, потому что я точно знаю, что объект существует. После ошибки Excel, кажется, выходит из строя и отключается, не сохраняя выполненную работу. В приведенном ниже коде ошибка возникает на tbl.ListRows.Add AlwaysInsert:=True
и многим другим, как это.
Я читал, что есть ситуации, когда Excel забывает, что эти объекты есть, или даже забывает, сколько записей в таблице.
Я не уверен, что когда-нибудь получу ответ, почему Excel делает это ...
У меня вопрос, как эффективно перехватить эту ошибку и выполнить сброс, чтобы Excel не выключился.
Private Sub pg1AddDoCode_Click()
Dim tbl As ListObject
Dim lrow As Integer
Set tbl = ThisWorkbook.Worksheets("Constants").ListObjects("DoCode")
tbl.ListRows.Add AlwaysInsert:=True
lrow = tbl.ListRows.count
With tbl.ListRows(lrow)
.Range(1) = UCase(Me.pg1DoCode)
.Range(2) = UCase(Me.pg1DoName)
End With
ClearValues Me.MultiPage1.Pages(1).Controls
Me.pg1AddDoCode.Enabled = True
Me.pg1EditDoCode.Enabled = False
Me.pg1DelDoCode.Enabled = False
Me.pg1Query.RowSource = tbl.Name
Set tbl = Nothing
End Sub