使用VBA通过切换button创build/删除图表

尴尬的代码不起作用,无论如何:

我的目标是通过切换button使用VBA创build特定的图表。 如果select/按下切换button,则创build图表并将其显示在活动工作表的特定部分上。 如果取消select切换button,图表将被删除。

以下是我的工作表的样子:

在这里输入图像说明

以下是我在从不同的博客中了解到一点VBA之后所写的代码,因为我目前没有访问VBA书籍的权限。 代码片段用于名为GoogleBtn的Googlebutton,并在单击该button时调用。

Private Sub GoogleBtn_Click() Dim mySheet As Workbook Dim myChart As Chart Set mySheet = ActiveWorkbook.Worksheets("Sheet1") Set myChart = mySheet.Shapes.AddChart.Chart If GoogleBtn.Value = True Then myChart.SetSourceData Source:=Sheets("Sheet1").Range("A4:B8") myChart.ChartType = xlLine myChart.Parent.Name = "GoogleChart" ElseIf GoogleBtn.Value = False Then myChart.Parent.Delete End If End Sub 

所以问题是:

  1. 为什么delete方法在这种情况下不起作用? 我试图删除.Parent但它仍然不起作用。

  2. 如何将图表对象放在工作表的特定部分,例如button的右侧? 我尝试使用incrementLeft等,但没有成功。

非常感谢您的帮助,如果有一些参考资料可供您进一步阅读,我会更加高兴和感激!

删除function可以正常工作,但会删除刚创build的新图表,而不是以前的图表。 你可以使用这样的东西:

 Private Sub GoogleBtn_Click() Dim mySheet As Worksheet Dim shp As Shape Dim myChart As Chart Set mySheet = ActiveWorkbook.Worksheets("Sheet1") On Error Resume Next Set shp = mySheet.Shapes("GoogleChart") On Error GoTo 0 If shp Is Nothing Then Set shp = mySheet.Shapes.AddChart(XlChartType:=xlColumnClustered, _ Left:=GoogleBtn.Left + GoogleBtn.Width + 2, Top:=GoogleBtn.Top, Height:=100, Width:=150) End If Set myChart = shp.Chart If GoogleBtn.Value = True Then myChart.SetSourceData Source:=Sheets("Sheet1").Range("A4:B8") myChart.ChartType = xlLine shp.Name = "GoogleChart" Else shp.Delete End If End Sub