У нас НЕТ представления о макете ваших листов, но мы можем попытаться получить представление о том, что происходит, используя код:
Этот раздел, по-видимому, является частью, которую (я полагаю) вы изменяете, ссылаясь на соответствующую таблицу:
Dim rng As Range
Set rng = ActiveSheet.ListObjects("Table2").Range
Затем, позже, в коде, напишите на лист, используя:
With WS3
rng.Parent.Cells(LastRow, 1).Value = CONo.Value
rng.Parent.Cells(LastRow, 2).Value = COTradeList.Value
rng.Parent.Cells(LastRow, 3).Value = COItems.Value
rng.Parent.Cells(LastRow, 4).Value = CODescription1.Value
rng.Parent.Cells(LastRow, 5).Value = COPrice1.Value
rng.Parent.Cells(LastRow, 6).Value = CODateIssued.Value
End With
Давайте посмотрим, что вы здесь делаете, разбив пару строк:
Во-первых, ваш With/End With
не имеет значения, вы здесь вообще не используете WS3. Они могут идти. Они не причиняют вреда, потому что ничего не делают. Все, что находится внутри этой оболочки, в любом случае относится ко всему, что относится к rng
.
Что еще более важно, вы пишете в ячейки, используя rng.Parent.Cells(LastRow, X)
Итак, вы ссылаетесь на диапазон таблицы (называемый rng
), , затем переходите к .Parent
, который будет листом, на котором Table2
находится , а затем из ячейки A1 вы найдете ячейку, используя LastRow
и x.
Теперь ранее LastRow
проверяет лист WS3, чтобы найти последнюю использованную ячейку / строку, а не rng
или Table2
- поэтому вы будете писать в строку на основе WS3 независимо от того, где rng
сидит.
Если вы можете сообщить, ГДЕ Table1
и Table2
(какой лист, верхний левый адрес ячейки), я думаю, что я мог бы обновить это, но прямо сейчас я бы угадал.