Excel VBA语法与应用手册
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 宏的其他运行方式

宏录制完成后,对于最终用户来说,其使用方式不够友好,因为上节所述的运行方式要求最终用户使用到“开发工具”选项卡,而这个选项卡中的内容对大多数使用Excel 2007的用户来说并不熟悉。要解决这样的问题可以将宏依附于某些控件或者图形上,例如命令按钮,最终的用户只要单击命令按钮即可执行宏。

1.2.1 使用表单控件来控制宏

上节所述的运行宏的方式主要有如下几种:

(1)选择“开发工具”选项卡,执行“代码”组内的“宏”命令,选择一个宏并执行该宏。

(2)如果用户在录制宏的时候设置了快捷键,那么可以通过快捷键来执行宏。

显然上述两种方法对了解宏的用户是可行的,但是有相当多的Excel 2007用户对宏是不熟悉的,他们也不清楚宏到底是用来做什么的。他所期望的运行方式就是单击某个按钮,即可运行某些功能。

例1-04:录制一段宏,宏的功能就是删除工作表中内容。录制完成后将该宏指定到按钮上,使得用户只需要单击工作表中某个按钮即可删除工作表中内容。

要做到这一点就可以使用表单控件。控件的位置位于“开发工具”选项卡下的“控件”组中的“插入”功能下,如图1-8所示。

图1-8 控件

从上图可以看出插入的控件有两大类,一类是表单控件,一类是ActiveX控件,在此处用到的是表单控件。将宏所能实现的功能依附在表单控件上,其操作步骤如下。

(1)打开“开发工具”选项卡,执行“控件”组内的“插入”下的“表单控件”命令,单击表单控件中的命令按钮,然后在工作表内绘制一个按钮,完成设置按钮的操作。

(2)绘制按钮完成后,就会弹出“指定宏”对话框,如图1-9所示。在宏名内输入“删除全部内容”,在位置下拉列表中选择“当前工作簿”,单击“录制”按钮,打开“录制新宏”对话框。

图1-9 “指定宏”对话框

(3)在打开的如图1-10所示的“录制新宏”对话框中,单击“确定”按钮,完成宏的设置,开始录制新宏。

图1-10 “录制新宏”对话框

(4)按键盘上的Ctrl+a组合键,全选工作表,再按键盘上的Delete键,删除工作表中的全部内容。选择A1单元格,打开“开发工具”选项卡,执行“代码”组内的“停止录制”命令,完成宏的录制。

(5)右击该按钮,在弹出的快捷菜单中选择“编辑文字”命令,将命令按钮的名称更改为“删除”,选中工作表中任意一个单元格,完成命令按钮名称的更改。

今后要执行“删除全部内容”这个宏,只需要单击一下工作表中的“删除”按钮即可。

1.2.2 为控件指定宏

上述的操作过程讲述的是绘制完表单控件后马上为其控件录制宏。如果宏已经录制完成,也可以将该宏指定给表单控件。

例1-05:将前述章节中录制的一个名为“相对模式下输入城市名称”的宏,指定给一个表单控件。

具体操作步骤如下。

(1)打开“开发工具”选项卡,执行“控件”组内的“插入”下的“表单控件”命令,单击表单控件中的命令按钮,然后在工作表内绘制一个按钮,完成设置按钮的操作。

(2)绘制按钮完成后,就会弹出“指定宏”对话框,直接单击“确定”按钮。

(3)右击该按钮,在弹出的快捷菜单中选择“指定宏”命令,打开“指定宏”对话框,如图1-11所示。选择“相对模式下输入城市名称”选项,单击“确定”按钮,完成指定宏的操作。

图1-11 “指定宏”对话框

返回工作表此时只要单击该按钮,即可完成输入四个城市名称的操作。

1.2.3 表单控件的设置

表单控件的大小和位置是可以修改的,移动按钮的方法是,右击该按钮,不要理会弹出的快捷菜单,将鼠标移动到按钮的边缘,当鼠标的形状变为向四个方向的小箭头时,如图1-12所示,即可拖动鼠标到合适的位置。将命令按钮移动到指定位置后,选中工作表中的任意一个单元格,完成操作。

图1-12 移动按钮

要更改控件的大小,只要将鼠标移动到上图的各个圆形小圈内,按住鼠标左键不放拖动即可。

删除已经存在的控件,其方法是右击指定控件,然后左键单击该控件,保证快捷菜单不显示,同时控件处于被选中状态,单击键盘上的Delete键,完成删除控件操作。

1.2.4 通过图形执行宏

除了将宏指定在表单控件上外,还可以为图形指定宏。

例1-06:将前述章节中录制的一个名为“相对模式下输入城市名称”的宏,指定给一幅剪贴画,其操作步骤如下。

(1)打开“插入”选项卡,执行“插图”组内的“剪贴画”命令,打开“剪贴画”窗格,选中一幅剪贴画,并拖动到工作表内,完成剪贴画的设置。

(2)在剪贴画上右击,如图1-13所示,在打开的快捷菜单中执行“指定宏”命令,打开如图1-11所示的“指定宏”对话框,为该图形指定名为“相对模式下输入城市名称”的宏,完成为图形指定宏的操作。

图1-13 插入剪贴画的工作表

(3)单击工作表中任意一个单元格,然后将鼠标移动到图形上,当鼠标指针变为手指形状时,单击该图形,即可执行“相对模式下输入城市名称”的宏。

1.2.5 在快速访问工具栏内添加按钮

除了为宏指定表单控件和图形外,还可以在快速访问工具栏内添加一个按钮,单击该按钮即可执行指定的宏,具体操作步骤如下。

(1)单击Excel 2007左上角的Office按钮,单击“Excel选项”按钮,打开“Excel选项”对话框。

(2)在Excel选项对话框中,左侧窗格内选择“自定义”命令,在右侧窗格中“从下列位置选择命令”下拉列表中选择“宏”,并在显示的宏命令列表框中选中“输入城市名称”,单击“添加”按钮,完成为“自定义快速访问工具栏”添加一个宏的命令按钮,如图1-14所示。

图1-14 添加宏命令按钮

单击“自定义快速访问工具栏”中添加“输入城市名称”宏命令按钮,就可以执行“输入城市名称”宏所具有的功能。

1.2.6 录制宏的使用实例

例1-07:假设某地各景区的门票实行旺季和淡季价格制度。淡季价格是景区的基础价格,如图1-15所示。

图1-15 景区价格

旺季价格会在淡季价格的基础上上浮40%。在工作表中放置两个按钮分别是“旺季价格”和“淡季价格”的按钮,单击“旺季价格”按钮显示的是旺季价格,单击“淡季价格”按钮显示的是淡季价格。

1. 录制“旺季价格”宏

要完成上述任务可以录制两个宏,首先录制一个名为“旺季价格”的宏,具体操作步骤如下。

(1)打开“开发工具”选项卡,执行“控件”组内的“插入”下的“表单控件”命令,单击表单控件中的命令按钮,然后在工作表内绘制一个按钮,完成设置按钮的操作。

(2)绘制按钮完成后,就会弹出“指定宏”对话框,在宏名内输入“旺季价格”,在位置下拉列表中选择“当前工作簿”,单击“录制”按钮,打开“录制新宏”对话框。

(3)在打开的“录制新宏”对话框中,单击“确定”按钮,完成宏的设置,开始录制新宏。

(4)选中B1单元格,将单元格中的内容更改为“旺季价格”,按Enter键确认,完成价格类型的输入。

(5)选中D2单元格,在D2单元格内输入公式“=B2*1.4”,按Enter键确认。然后再次选中D2单元格,将鼠标移动到D2单元格的右下角,向下拖动至D6单元格,完成公式的填充,如图1-16所示。

图1-16 计算旺季价格

(6)选中D2到D6单元格区域,右击鼠标,在弹出的快捷菜单中执行“复制”命令,然后选中B2单元格;右击鼠标,在弹出的快捷菜单中执行“选择性粘贴”命令,打开如图1-17所示的“选择性粘贴”对话框,粘贴类型选择“数值”,单击“确定”按钮,完成旺季价格的确定。

图1-17 “选择性粘贴”对话框

(7)选中D2到D6单元格,按键盘上的清除按钮,清除内容。

(8)打开“开发工具”选项卡,执行“代码”组内的“停止录制”命令,完成“旺季价格”宏的录制任务。

(9)右击工作表上的表单控件“按钮1”,执行“编辑文字”命令,将按钮上的文字更改为“旺季价格”,然后将鼠标单击工作表中任意一个单元格,完成按钮文字的设定。

2. 录制“淡季价格”宏

录制完“旺季价格”宏后,接着需要录制一个名为“淡季价格”的宏,具体操作步骤如下。

(1)打开“开发工具”选项卡,执行“控件”组内的“插入”下的“表单控件”命令,单击表单控件中的命令按钮,然后在工作表内绘制一个按钮,完成设置按钮的操作。

(2)绘制按钮完成后,就会弹出“指定宏”对话框,在宏名内输入“淡季价格”,在位置下拉列表中选择“当前工作簿”,单击“录制”按钮,打开“录制新宏”对话框。

(3)在打开的“录制新宏”对话框中,单击“确定”按钮,完成宏的设置,开始录制新宏。

(4)选中B1单元格,将单元格中的内容更改为“淡季价格”,按Enter键确认,完成价格类型的输入。

(5)选中D2单元格,在D2单元格内输入公式“=B2/1.4”,按Enter键确认。然后再次选中D2单元格,将鼠标移动到D2单元格的右下角,向下拖动至D6单元格,完成公式的填充。

(6)选中D2到D6单元格区域,右击鼠标,在弹出的快捷菜单中执行“复制”命令,然后选中B2单元格,右击鼠标,在弹出的快捷菜单中执行“选择性粘贴”命令,打开“选择性粘贴”对话框,粘贴类型选择“值”,单击“确定”按钮,完成淡季价格的确定。

(7)选中D2到D6单元格,按键盘上的清除按钮,清除内容。

(8)打开“开发工具”选项卡,执行“代码”组内的“停止录制”命令,完成“淡季价格”宏的录制任务。

(9)右击工作表上的表单控件“按钮2”,执行“编辑文字”命令,将按钮上的文字更改为“淡季价格”,然后将鼠标单击工作表中任意一个单元格,完成按钮文字的设定。

有了这两个宏以后,用户只要在工作表中单击“旺季价格”或者“淡季价格”即可显示指定季节的价格。