Существуют более эффективные решения, но они довольно просты и позволяют относительно легко увидеть, что именно делает ваш код:
Посмотрите на "OFFSET" и «END (XLDOWN)» OFFSET (+/- # строк,+/- # столбцов) Пример: selection.offset(-1,0)
относится к ячейке непосредственно над выбранной ячейкой, в то время как selection.offset(1,1)
относится к ячейке вниз и справа от выбранной ячейки.
Переместите курсор на последнюю дату в столбце:(Предполагается, что "A1" содержит первую дату в вашем списке; измените соответственно)
range("A1").end(xldown).select
Добавьте новые даты и заполните формулы, пока не будет достигнута желаемая дата:
do until selection = date-1
'select the next empty cell in the date column
selection.offset(1,0).select
'enter the date
selection.value = selection.offset(-1,0).value +1
'update each column
'repeat for each column as needed
'same row, one column to the right, getting formula from the cell above it:
selection.offset(0,1).formula=selection.offset(-1,1).formula
'same row, three columns to the right, getting formula from the cell above it:
selection.offset(0,3).formula=selection.offset(-1,3).formula
'after updating all desired columns, go to the next date:
loop
Вы можете просто повторить код для каждого листа (не рекомендуется):
sheets("name").select
'code
sheets("name2").select
'code
'etc.
или настройте цикл для рабочих таблиц:
for a = 1 to 3:
sheets(a).select
'code
next a
Если ваша рабочая книга содержит более трех листов, вам необходимо проверить имена листов:
for a = 1 to activeworkbook.sheets.count
select case sheets(a).name
case "name,name2,name3":
'code
case else:
'do nothing
end select
next a
Опять же, это не обязательно самые элегантные решения, но они должны дать вам твердое начало для создания вашего макроса.