我有一个将创建一个图表到工作表的子,当我试图添加名称到图表与.name它给我一个错误“内存不足”.我曾试图添加它内部的with块,但同样的错误,我也尝试了不同的名称,而不是hi,但仍然是同样的事情.
Option Explicit
Sub addchartv4()
Dim chart As chart
Dim xRg As Range
Dim chartdatarange As Range, chartExists As Boolean
Set chartdatarange = Worksheets("count_issue").Range("a3:c17")
' chartexists = False
' For Each Chart In ActiveSheet.ChartObjects
' If Chart.Name = "issue_count" Then
' chartexists = True
' Exit For
' End If
'
' Next Chart
'
Set chart = Nothing
On Error Resume Next
Set chart = Worksheets("chart11").ChartObjects
On Error GoTo 0
If chart Is Nothing Then
Set chart = Worksheets("chart11").ChartObjects.Add(Left:=Range("a1").Left, Top:=Range("a1").Top, Width:=400, Height:=300).chart
chart.Name = "hi"
With chart
.ChartType = xlColumnClustered
.SetSourceData Source:=chartdatarange
', PlotBy:=xlColumns
.SeriesCollection(1).XValues = chartdatarange.Columns(1)
.HasTitle = True
.ChartTitle.Text = "issue_count"
.HasLegend = False
.SetElement msoElementDataLabelOutSideEnd
.SetElement msoElementPrimaryCategoryGridLinesNone
.SetElement msoElementPrimaryValueAxisNone
End With
End If
End Sub
1条答案
按热度按时间elcex8rz1#
不应命名图表,而应命名chartObject。
ChartObject是图表的容器(并且是工作表的
Shapes
-集合的一部分。在ChartObject
中,您有Chart
-属性,该属性定义真实的图表。您不能命名图表,您只能命名ChartObject
。图表具有自动生成的名称(包含工作表+ chartObject名称)。尝试手动设置名称将导致此“内存不足”错误(这只是出现故障的症状)。现在修复很简单,但是代码中还有另一个问题:检查工作表是否已包含图表(对象)时,使用命令
Set chart = Worksheets("chart11").ChartObjects
尝试将chartObjects
-集合分配给chart
变量。无论如何,此操作都将失败,并显示“Type mismatch”。由于您使用On Error Resume Next
括起命令,因此看起来好像该工作表上从未有过图表,并且每次创建新图表时都是如此。如果工作表上始终只有一个图表,则可以将代码更改为
如果要检查图表“Hi”是否已存在,请使用