使用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
所以问题是:
-
为什么
delete
方法在这种情况下不起作用? 我试图删除.Parent
但它仍然不起作用。 -
如何将图表对象放在工作表的特定部分,例如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