Я думаю, вы неправильно понимаете, как работает For Each
. Он не проходит через каждый ряд или каждую ячейку. Он проходит через Areas
, который является набором Range
с. Обычно в этой коллекции только один Range
, но если вы выделите ячейки с помощью Ctrl , то у вас будет больше элементов в Areas
.
Итак, ваш код берет одну такую «область» и копирует ее первый столбец в столбец A, затем 5-й столбец в столбец D и вводит «HVD» в одну ячейку (Cells(DestRow, "J")
). Если вы хотите ввести это значение в каждой строке, вы должны изменить размер этой ячейки. И для этого вы можете использовать это:
wsDest.Cells(DestRow, "J").Resize(Rng.Rows.Count).Value = "HVD"
Кроме того, помните, что вы можете отлаживать код, поместив курсор в код макроса и нажав F8. Это будет запускать ваш код построчно, и все изменения будут сразу же видны на листе.