在Excel中,我们可以通过录制一个宏并执行它来快速完成一系列的操作,非常自动化地进行,那如果我们对宏里面的某个动作不满意,需要进行调整或修改,该怎么办呢?重新录制宏的话,可能会比较麻烦,尤其是操作步骤较多的情况下,这种情况下,我们可以对宏里面的某些代码(对应的某个操作)进行修改即可。
在上两期(Excel的这几种执行宏的方式,你都了解吗? - ,Excel中如何录制宏,相关的基本操作你都会了吗? - )中,我们已经录制了一个创建时间表的宏,在本期中我们希望将时间表中的表头(“Weekly Timesheet”)的字号增大到20,并且在“Week Commencing”后面加上时间表创建的日期,在添加日期时,我们希望可以弹出一个弹窗然后用户可以手动填写当前的日期,之后再继续后面的宏操作步骤,完成时间表的创建。
编辑宏代码需要在VBA的编辑器中,点击“开发工具”选项卡,点击“宏”,打开其对话框。
在“宏”对话框中,选择所要修改的宏,然后点击“编辑”按钮,即可跳转到VBA的编辑器中。
在VBA编辑器中,我们在左侧可看到“工程-VBAProject”栏,这里可看到Excel工作簿中的各个工作表,而录制好的宏在这里保存在“模块”中(在录制宏的过程中会自动创建模块),右侧是代码框。
在代码框中:
宏是以“Sub”开始,以“End Sub”结束,所有的代码需要在它们之间;
每一行的代码代表一个操作;
绿色字体的代码并且前面有单引号的为代码的注释,在执行宏的过程中会跳过这些注释的步骤而不执行其动作。我们可以在注释中添加代码编写的相关信息,例如,何人、何时所写或修改的代码,或者当某个步骤出错时,若不想轻易删除代码,可以将其注释。
宏里面的代码是我们在录制的过程中系统自动生成的,所以对没有真正了解过代码的用户来说,可能看到这些一大堆的英文及符号摸不着头脑,但其实也并不是很难理解。例如:
Sheets.Add After:=Active Sheet:执行的是新增工作表的工作,且在当前活动工作表的后面添加。
Range("A2").Select:点击选中A2单元格。
我们需要修改的动作主要有两个:
.Size = 16:这是A1单元格中的表头“Weekly Timesheet”的字号,通过上面的“With Selection.Font”代码可知。我们需要将其改成20。
在此修改代码后,并不会立即对Excel中的表格产生影响,只有当再次执行修改后的宏才会生效。
在第四行代码(ActiveCell.FormulaR1C1 = "Week Commencing:")后面新增一行代码(Range("b2").Value = InputBox("请输入日期", "New Timesheet Date")),此代码表示在B2单元格中添加一个值(Value),而这个值我们通过一个InputBox来输入。
关于InputBox的用法,可参考:
Excel VBA系列之InputBox参数介绍 -
修改好代码后,我们需要先保存,然后再执行修改后的宏。在VBA编辑器中,我们可看到保存的按钮,或者回到Excel工作簿中点击保存按钮亦可。
回到Excel工作簿中,我们可以通过快捷键Alt+F11关闭或打开VBA的编辑器。点击“Sheet1”工作表,再点击“New Timesheet”按钮,该按钮已指定宏“Create_Timesheet”。
执行宏后,会新增一张工作表,并且弹出一个对话框(InputBox),在空白处我们输入制表的日期。
点击对话框中的“确定”后,“Sheet6”工作表中会新增一个时间表,并带上了我们输入的日期。
通过以上的案例,我们即了解到Excel中如何根据特定的需求编辑录制的宏,以及VBA编辑器的基本使用界面。下一期,我们会继续了解如何复制和删除录制的宏,敬请期待!