vba 命名图表时出现内存不足错误

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22762120/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-12 02:35:34  来源:igfitidea点击:

out of memory error while naming chart

excelvbaexcel-vbachartsout-of-memory

提问by user3481103

I am getting an "out of memory" error while trying to name a chart. I need to be able to reference this chart later in another sub program. Any help appreciated.

尝试命名图表时出现“内存不足”错误。我需要能够稍后在另一个子程序中引用此图表。任何帮助表示赞赏。

Sub CreateChart()
' Creates chart for the Quality sheet

Dim sBusiness As String
Dim charttype As String
Dim shChart As Worksheet
Dim num_iss As Integer
Dim i As Integer
Dim endrng As Integer
Dim currentChart As Chart

Set shChart = ThisWorkbook.Sheets("Chart Tool")
sBusiness = ThisWorkbook.Worksheets("Chart Tool").Range("select_bu").value
charttype = ThisWorkbook.Worksheets("Chart Tool").Range("select_chart").value
num_iss = ThisWorkbook.Sheets("Chart Tool").Range("num_issues").value
endrng = 31 + num_iss


' Chart Placement
   shChart.Shapes.AddChart(xlColumnClustered, _
    Left:=8, Top:=110, _
    Width:=428, Height:=240).Select
    If charttype = "Cost" Then
        ActiveChart.SetSourceData Source:=shChart.Range(shChart.Cells(2, 32),                 shChart.Cells(3, endrng)) ' souce range
    End If
If charttype = "DPM" Then
    ActiveChart.SetSourceData Source:=shChart.Range(shChart.Cells(7, 32), shChart.Cells(8, endrng)) ' souce range
    End If

   ActiveChart.SetElement msoElementCategoryAxisShow
   ActiveChart.SetElement msoElementChartTitleAboveChart ' sets chart title above
   ActiveChart.SetElement msoElementLegendNone ' removes legend
   ActiveChart.SetElement msoElementPrimaryCategoryAxisTitleBelowAxis ' horizontal axis
   ActiveChart.SetElement msoElementPrimaryValueAxisTitleRotated ' Vertical axis
   ActiveChart.ChartTitle.Caption = "Top Issues for " & sBusiness & " by " & charttype ' adds title name
   ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Caption = "Issue" ' adds x-axis title name
   ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Caption = charttype ' adds y-axis title name
   ActiveChart.Name = "ParetoChart"

End Sub

回答by David Zemens

The chart's .Nameproperty is Read-Only for embedded chart objects. You should be able to assign a name to the chart's parent .ChartObject.

.Name对于嵌入的图表对象,图表的属性是只读的。您应该能够为图表的 parent 分配一个名称.ChartObject

Since the ChartObjectis parent of .Chart, try:

由于ChartObject是 的父级.Chart,请尝试:

ActiveChart.Parent.Name = "ParetoChart"