图表宏的代码运行(excel宏作图)
选择“开发工具”选项卡|“插入”|“表单控件”|“按钮”命令,然后在工作表上的任意位置,画一下,就会弹出“指定宏”的界面。
在图中,选择刚才录制好的宏:hong1“确定”。此时,在工作表上就出现了“按钮1”的按钮,如图所示。
现在就能运行了吗?事实上,还是不行还需要再次修改一下代码。为什么呢?因为这里有个图表名称的问题,像录制宏出来的图表名称是“图表1”,但是我们再次运行的时候,相当于在Excel工作表中,继续添加了图表,那么图表的名称会自动变成“图表2”、“图表 3”、“图表 4”……这样一直累积下去。
仅用上面录制出来的代码,在运行的时候就会报错,或者运行的结果不是我们想象的那样,因为录制出来的代码,从始至终作用的对象都是“图表1”。我们在生成一个新的Excel图表时,无法成为代码的作用对象,所以也无法达成我们想要的效果。
那该怎么办呢?有两种方法:
(1)涉及图表名字的代码不一定用得上,如我们上面录制的宏,其实,仔细观察一下就会发现,因为代码所有的操作都是在“图表1”上的,中间没有增加比如对单元格、对工作表等其他对象的操作,即代码的对象从始至终都是唯一的:图表1,这时候,可以将代码中包含“图表1”的代码(即ActiveSheet.ChartObiects("图表1").Activate)全部删除。精简如下:
(2)代码中非要带着图表的名字。这种情况也很多,因为在生成图表后,可能还要对其他对象,如单元格、工作表、形状等进行一些操作或者修改等,那么等你再想激活Excel图表的时候,就必须要有图表的名字了。
用这句代码:Right(ActiveChart.Name,Len(ActiveChart.Name)-7)来取回图表的名字,并将它赋值给一个变量,比如这里就叫:tubiaomingzi。最后用“tubiaomingzi”这个变量将我们一开始录制的宏的代码中的“图表1”全部替换掉,变成以下的代码: