Я предполагаю, что вы имеете в виду, говоря «я бы хотел, чтобы это изменилось после запуска макроса». заключается в том, что вы хотите, чтобы именованные диапазоны перемещались.
У меня есть таблица для отслеживания времени по неделям, и «первая» таблица является активной. Когда неделя заканчивается, я копирую весь активный лист на новый лист. Есть итоги, которые я хочу перенести с предыдущей недели, поэтому я сохраняю эти данные. Я делаю это с помощью трех столбцов: итоговая сумма за текущую неделю, общая сумма за предыдущие недели, новая сумма. Я вставляю значения из новой суммы в старую. Затем я убираю ячейки, используемые для ввода.
Все мои инстинкты были (есть) использовать именованные ячейки, но в данном случае я пришел к выводу, что это было неправильно. Я просто использовал диапазоны ячеек (A1, K2: K0 и т. Д.) Проблема в том, что имена не являются локальными для каждого листа, поэтому вам придется переместить имена со старого листа на новый, а это просто не так. Стоит усилий. Кроме того, в этом случае альтернатива создания похожих имен, уникальных для каждого листа (например, Mon-FriWeek1, Mon-FriWeek2 и т. Д.), Не дает вам ничего практического по сравнению с Week1! 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
Вам действительно нужно сохранить там хотя бы одну строку, иначе она (и многое другое в моем случае) не сработает. Но это прекрасно подходит для моих нужд.
Надеюсь, это поможет.
person
minnow
schedule
16.11.2011