我得到了一个包含 3 个工作表的 Excel 表,我通过下拉日期列手动每 2-3 天更新一次,它会根据日期自动更新列。
例如:假设我在 4 月 4 日打开了 Excel,我要做的就是将日期拉下来,直到今天 -1并且以下列将自动更新。
我基本上在工作表中添加了 2 行,并且列根据日期进行更新。
01.04.2016 12 15 16 19
我想制作一个宏,当我同时按下 3 个工作表的按钮时,它会添加那些需要的行(如果我 10 天内没有人更新 Excel,则需要添加 9 行等)。
多谢。
答案1
还有更有效的解决方案,但是这个解决方案相当简单,并且可以相对容易地准确地看到代码在做什么:
查看“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
再次强调,这些不一定是最优雅的解决方案,但它们应该为您构建宏提供一个良好的开端。