要生成30个日报表,估计你是一个个操作,移动复制重命名,改了大半天。有了VBA以后,就可瞬间生成,点一下按钮全搞定。 其实,实际工作中,很多东西都可以靠VBA生成的。VBA并不遥远,而是与你的工作息息相关。 你也不要把VBA想得太复杂,跟着卢子学习就行,其他别想。 还是老套路,用最原始的方法操作,先录制宏,再慢慢改代码完善。 Step 01 录制一个宏,将模板移动或复制,移至最后,勾选建立副本。 Step 02 点VB进入后台,再点模块,就可以看到刚刚录制的宏。 Sheets("模板").Select 选择模板这个工作表。 中间那句不用管,没啥意义。 Sheets("模板").Copy After:=Sheets(1) 将模板复制到第1个工作表后面。Copy复制,After之后,即使不会英语,你都可以大概猜出意思。 现在要实现的效果就是,每复制一次,都在最后工作表的后面创建一个新表。第1次就在表1后面,第2次就在表2后面,第3次就在表3后面。 前面学了循环语句,你可能想到通过i这个变量来实现,其实还有一个更智能的。Sheets.count就是计算工作表的个数。 现在语句就改成Sheets("模板").Copy After:=Sheets(Sheets.Count)。 生成新表的同时对该表进行命名,Sheets.Name就是工作表的名称,名称依次等于1日、2日、3日……此时通过For Next循环,让i变量随着循环次数变更来实现。 Sheets(Sheets.Count).Name = i & "日" 将刚刚说的内容综合起来代码就出来了。 还有一个小问题,就是在每个表的A2生成日期。 Sheets.Range代表某个表的单元格,日期前面部分是固定的为 "2020/6/" 再连接变量i就可以。 Sheets(Sheets.Count).Range("a2") = "2020/6/" & i 到此,完整的代码就出来了。
Step 03 将复制的模板手工删除掉,运行代码,即可生成日报。 在写VBA代码的时候,不区分大小写,会自动帮你更正。很多单词也可以不用记住,在输入的时候会自动提示,按Tab键可以补齐。其实就跟写函数一样。 最后,如果需要按月汇总30个表格,也很简单,因为是VBA生成的格式都一样,只需一个SUM函数就解决。
写代码的时候,你某些语句不懂写,可以录制一个宏,这样就会将难度降低,平常我都是这样做。 将录制宏学好了,后面再慢慢接触一些新语句,其实需要记住的新语句也没多少。最常用的就是循环语句For Next。 陪你学Excel,一生够不够? |
|