1

私はいくつかのシートを持つ wb を持っており、それぞれに 2 つのテーブル (listobjects) があります。ユーザーがテーブルから行を追加、編集、削除できるユーザーフォームもあります。これらのテーブルは静的であり、常に存在し、削除されることはなく、同じ場所にあり、移動することはありません。また、これらのオブジェクトをさまざまな方法 (インデックスまたは名前) で参照して、違いがあるかどうかを確認しました。

ユーザーが任意のテーブルに対して追加、編集、または削除を行うと、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
4

2 に答える 2