本期的内容是关于Excel中使用相对引用录制宏。
我们来看一下案例:在“BPay”工作表中需要上传并更新客户支付的信息,而因为这些信息是每天都需要更新的,所以需要通过录制一个宏来实现数据更新过程的自动化;与创建模板时间表不同,此任务需要每次上传完数据时,都需选中当前数据表格的空白行,如下图所示为第9行。
在使用相对引用的过程中,如果先选中D9单元格,在点击A9单元格,使用相对引用的宏会录制下从A9至D9单元格的区域,而不仅仅是A9单元格。
以下是录制宏的具体步骤:
1. 点击“开发工具”选项卡,再点击“使用相对引用录制宏”。
2. 点击“录制宏”,将宏命名为“Import_Data”,并设置快捷键为Ctrl+Shift+I。
3. 使用快捷键(键盘)来选中第一个空白行(此处定位到A9单元格):当前选中的是F4单元格,Ctrl+Home选中A1单元格,Ctrl+向下箭头选中数据表格中的最后一行A8单元格,向下箭头选中A9单元格。
4. 导入数据:点击“数据”选项卡,点击“获取数据”下的“传统向导”,点击“从文本”导入。(这一步可根据数据导入的实际情况进行调整或设计,此案例中具体操作仅作演示用)
5. 在导入数据完成的最后一步,我们注意到数据放在A9单元格中,关于这一步,我们会在后面进行相应地修改。
6. 点击“确定”后,数据即可导入到“BPay”工作表中,但是在导入时,将文本数据中的表头也一起导入进来了。
7. 使用快捷键选中A9至D11单元格区域:Shift+向右箭头,然后Shift+向下箭头。
8. 选中需要删除的区域后,点击“开始”选项卡下的“删除”按钮。
9. 点击“开发工具”选项卡,再点击“停止录制”。
10. 录制好的宏“Import_Data”有两个小问题:一是数据导入时放在了A9单元格中,二是我们需要在导入数据时数据的文本名称需要更具灵活性,而不总是导入相同名称的文件。
点击“开发工具”选项卡下的“宏”,再选择“Import_Data”,点击“编辑”。
11. 第一个需要修改的地方是导入的数据文件名称:将具体的名称改为通过InputBox输入日期来确定具体的数据文件是哪个。
12. 第二个需要修改的是导入数据时所选中的空白单元格,即新的数据应从此空白单元格中开始添加,我们在之前导入时,选中的是A9单元格,我们需要将其改为活动单元格“ActiveCell”。
13. 完成修改后,我们来测试一下“Import_Data”宏;回到数据表中,先点击某个空白单元格,注意我们当前数据的最后一行为第22行。
14. 快捷键Ctrl+Shift+I,执行宏“Import_Data”,当执行到InputBox时,输入一个日期“20170815”,即可导入以此日期命名的数据文件。
15. 点击“确定”后,程序报错,出现了一个“运行时错误”。
16. 点击“调试”,可以帮助我们定位到代码中的错误在哪里,从而针对其进行修改。
17. 错误是在“.CommandType = 0”,这实际上是Excel自身的bug,因为并没有CommandType为0的,所以我们可以将此行代码进行注释,即在其最前面加上一个单引号。
18. 注释后,执行的过程会自动跳到下一步,我们点击“继续”执行的按钮。
19. 回到Excel工作表中,我们看到宏“Import_Data”已执行完,添加了新的数据。
通过以上的案例,我们可以发现使用相对引用录制宏时,可以使自动化的功能更加强大,对于处理更为复杂的数据非常有用。
网友评论