0

我正在尝试旋转我的 3D 柱形图。到目前为止,我有以下内容:

ActiveChart.Name = "44 Chart 7"

With ActiveChart
    .SetSourceData Source:=pzx.Range("L126:M135")
    .HasTitle = False
    .HasTitle = True
    .Shapes("44 Chart 7").ThreeD.RotationX = 0
    .ChartTitle.Text = "Classification Actions"
    .ChartArea.Font.Color = RGB(0, 0, 140)
    .ChartTitle.Font.Name = "Arial"
    .ChartTitle.Font.Size = 10
    .Legend.Font.Size = 8
    .Legend.Font.Name = "Arial"
    .ChartStyle = 11
    .ChartArea.Format.Line.Visible = msoFalse
   End With

我有两个问题——

1)如果您自己不主动命名图表,是什么决定了图表的命名方式 2)您知道为什么此代码不起作用

这是我收到的错误 -

运行时错误 7 内存不足

非常感谢!

4

1 回答 1

0

命名对象具有您必须遵循的命名约定。对于图表:当图表在工作表上时,该Name属性适用于作为图表容器ChartObject的对象。

With Chart
   .Parent.Name = "myChartName"
End With

或者

`Sheets(1).ChartObjects(3).Name = "Name of my Chart"`

或者

`Sheets(1).Charts("My old Chart Name").Name = "Name of my Chart"`

如果您知道图表所在的位置,请指向带有工作表参考的图表,而不是使用ActiveChart. 如果您不主动命名图表,则必须使用图表的默认原始名称来引用它。或者它的索引。

请在你的最后尝试这个代码片段。

Option Explicit

Sub createMyCharts
Dim mySheet As Worksheet
Dim mychtObject As ChartObject
Dim myChart As Chart

'-- put anything else you need to delcare and set

Set mySheet = Worksheets(1) '-- set according to your sheet

'-- delete any old leftovers to clean up
For Each mychtObject In mySheet.ChartObjects
  mychtObject.Delete
Next

'-- create new chart
Set myChart = mySheet.ChartObjects.Add(Left:=30, Width:=500, Top:=30, Height:=200).Chart

With myChart
  .ChartType = Excel.XlChartType.xl3DColumn '-- the full chart Type
  .SetSourceData(mySheet.Range("L126", "M135"), Excel.XlRowCol.xlColumns)
  .Rotation = 30
End With

'-- do anything else you need to do

结束子

参考MSDN Chart Rotation

试用后,如果您有任何问题,您可以发表评论并很乐意为您提供帮助。:)

于 2012-12-12T06:46:14.600 回答