select图表后,从button中运行VBA脚本

我在Windows 7上运行Excel 2010。

我在工作表上有四个图表。 我想要做的是select一个图表,然后点击一个button打开“格式轴”对话框。 我在网上find了下面的代码来打开对话框。 如果我select一个图表,然后从工具栏运行代码(开发选项卡,macros,selectmacros,按'运行'),它运作良好。

Sub formatXAxis1() ActiveChart.Axes(xlCategory).Select Application.CommandBars.ExecuteMso "ChartFormatSelection" End Sub 

我遇到的麻烦是VBA脚本被分配到一个button。 如果我使用一个形状作为button,我得到“运行时错误'91':对象variables或块variables未设置”。 如果我使用ActiveX命令button,我会得到相同的错误。 但是,如果使用Form Controlbutton,则按预期工作。 这个解决scheme唯一的问题是不可能改变button的背景颜色,使其看起来与工作表上的其他macros调用button相反。

我猜测,在前两种情况下(形状和ActiveXbutton),当我按下button时,VBA会丢弃或丢失图表select – 尽pipe图表仍然在屏幕上显示。 有没有解决这个问题,或者我做错了什么?

对于ActiveXbutton,在Properties设置属性

 TakeFocusOnClick 

False 。 这将导致Selection保持在图表,而不是切换到button,你的代码应该工作。 颜色也可以从属性框中改变,尽pipe你可能已经知道了。

你需要通过名字来引用图表。 因此,要么有4个button(每个图表一个),要么让用户input图表的名称,然后:

 Dim co as ChartObject Dim c as Chart Dim NameOfChart as String NameOfChart = Inputbox("Enter name of chart") Set co = ActiveSheet.ChartObjects(NameOfChart) Set c = co.chart c.Axes(xlCategory).Select Application.CommandBars.ExecuteMso "ChartFormatSelection"