Таблицы не работают так же, как обычные диапазоны.Даже если вы зайдете в Excel, нажмите на таблицу и попробуйте сделать Alt-ED (удалить).Обычно это дает вам возможность сместить ячейки вверх, сместить ячейки влево, удалить всю строку или удалить весь столбец, но если вы сделаете это из таблицы, это ничего не даст.
Я предполагаюнемного, но я подозреваю, что это как-то связано с вашим неожиданным поведением.
Вместо этого, если вы просто хотите удалить строки, вместо этого удалите строки таблицы (ListRows):
.ListObjects(Table_name).ListRows(row_number).Delete
Или, если вы хотите удалить их все (как показано в вашем вопросе):
For i = .ListObjects(Table_name).ListRows.Count To 1 Step -1
.ListObjects(Table_name).ListRows(i).Delete
Next i
Если вы не сделаете это задом наперед, я уверен, что он пропускает строки, а затем разбивает.
Тогда всегда есть подход выжженной земли:
.ListObjects(Table_name).DataBodyRange.Delete
Если вы не заботитесь о содержимом в тех же строках за пределами вашей таблицы данных, они должны работать.