Я предполагаю, что то, что вы подразумеваете под «я хотел бы, чтобы это переместилось после запуска макроса».это то, что вы хотите, чтобы именованные диапазоны перемещались.
У меня есть электронная таблица для отслеживания времени по неделям, и «первый» лист является активным.По истечении недели я копирую весь активный лист на новый лист.Есть итоги, которые я хочу перенести с предыдущей недели, поэтому я сохраняю эти данные.Я делаю это, имея 3 столбца: итоги текущей недели, итоги старых (предыдущих недель), итоги новых.Я вставляю значения от нового итога до старого итога.Затем я очищаю ячейки, используемые для ввода.
Каждый мой инстинкт был (есть) использовать именованные ячейки, но в этом случае я пришел к выводу, что это было неправильно.Я просто использовал диапазоны ячеек (A1, K2: K0 и т. Д.). Проблема в том, что имена не являются локальными для каждого листа, поэтому вам придется перемещать имена со старого листа на новый, а это просто не так.Стоит усилий.Кроме того, в этом случае альтернатива создания похожих имен, уникальных для каждого листа (например, Mon-FriWeek1, Mon-FriWeek2 и т. Д.), Не принесет вам ничего практичного в течение недели 1! A1: A10 и т. Д. -за исключением, может быть, самоудовлетворения тем, что вы использовали имена, как вы «должны».В любом случае, это мое мнение!
И, возможно, это может помочь: в моей таблице могут быть добавлены / удалены строки из одной недели в следующую.Чтобы учесть это и при этом избежать именованных диапазонов, я имитирую переход к столбцу с формулой в каждой строке и нажимаю Shift + End, а затем стрелку вниз.Выбор остановится на последней ячейке, в которую что-то введено.Вот код для этого (первая строка - заголовок / метка):
'Copy New Total Hours as PasteValues to Old Total
Dim lastRow As Long
Range("K1").Select
Range(Selection, Selection.End(xlDown)).Select
lastRow = Selection.Rows(Selection.Rows.Count).Row + 1
Range("K2:K" & CStr(lastRow)).Select
Selection.Copy
Range("J2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Вам нужно сохранить хотя бы одну строку, или это (и очень много других вещей в моем случае)не работаетНо это вполне соответствует моим потребностям.
Надеюсь, это поможет.