Excel 使用VBA通过切换按钮创建/删除图表
不管怎么说,代码不起作用让我很尴尬: 我的目标是通过切换按钮使用VBA创建特定图表。如果选择/按下切换按钮,图表将创建并显示在激活图纸的特定部分上。 如果取消选择切换按钮,图表将被删除 以下是我的工作表的外观: 以下是我从不同的博客学习VBA后编写的代码,因为我目前没有VBA书籍。该代码段用于名为GoogleBtn的Google按钮,并在单击该按钮时被调用Excel 使用VBA通过切换按钮创建/删除图表,excel,excel-2007,vba,Excel,Excel 2007,Vba,不管怎么说,代码不起作用让我很尴尬: 我的目标是通过切换按钮使用VBA创建特定图表。如果选择/按下切换按钮,图表将创建并显示在激活图纸的特定部分上。 如果取消选择切换按钮,图表将被删除 以下是我的工作表的外观: 以下是我从不同的博客学习VBA后编写的代码,因为我目前没有VBA书籍。该代码段用于名为GoogleBtn的Google按钮,并在单击该按钮时被调用 Private Sub GoogleBtn_Click() Dim mySheet As Workbook Dim myChart As
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
,但它仍然无法正常工作incrementLeft
等,但没有成功非常感谢您的帮助,如果能提供一些参考资料供进一步阅读,我将非常高兴和感谢 删除确实有效,但它会删除您刚刚创建的新图表,而不是以前的任何图表。您可以使用以下内容:
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
非常感谢你的帮助。如果我可以问:您使用shapes对象来帮助删除图表,对吗?为什么我的方法只是删除新图表,而不是之前创建的图表?如果您也能回答这些问题(如果您想分享任何URL供参考),我将非常感激。正确。你的工作流程是:1。单击按钮,添加图表并设置其数据。2.再次单击按钮,这将添加另一个图表(因此现在有2个),然后由于未按下togglebutton,它将删除新图表。然而,工作表上仍然有一张图表。3.再次单击按钮,添加另一个图表并设置其数据(现在我们又有两个)。4.重复步骤2,但现在末尾仍然有两个图表,依此类推。