0

我有一个 Excel 工作表,其中使用 VBA 创建图表。问题是在生成图表后,我将它的形状设置为内置的形状样式。但是当我执行以下代码时,什么也没有发生。

ActiveSheet.Shapes("AdoptChart").Select
ActiveSheet.ChartObjects("AdoptChart").Activate
ActiveSheet.Shapes("AdoptChart").ShapeStyle = msoShapeStylePreset22

执行此行时ActiveSheet.Shapes("AdoptChart").ShapeStyle = msoShapeStylePreset22.ShapeStyle属性不会更新,即在此行之前为 0,执行此行后仍为 0。

这是我通过录制宏并手动设置图表形状样式得到的代码。

我使用的是 Excel 2010,但 Excel 文件是 2003 文件(我在兼容模式下运行它。)

编辑:这是我手动选择形状后得到的宏。

Sub shape()
'
' shape Macro
'

'
    ActiveSheet.Shapes("AdoptChart").ShapeStyle = msoShapeStylePreset22
    Range("I7").Select
End Sub
4

1 回答 1

0

根据我的评论,我建议您为新的 Excel 2003 工作簿录制一个宏,该工作簿于 2010 年以兼容模式打开。因此,您可以使用本参考中所示的 2010 Ribbon。但是,了解您打算在未来使用这些图表的 Excel 版本非常重要。是在 2010 年还是 2003年……正如ShapeStyle2007 年添加的那样……

2. 在“格式”选项卡上,执行以下操作之一:

在当前选择组中,单击格式选择,然后在格式对话框中,选择所需的格式选项。在形状样式组中,单击更多按钮按钮图像,然后选择一种样式。

Excel 功能区图像:

在此处输入图像描述

在“形状样式”组中,单击“形状填充”、“形状轮廓”或“形状效果”,然后选择所需的格式选项。

在 John Peltier 的网站上查看这篇文章, 2007 年和 2003 年之间的代码比较非常有用。那么为什么不将工作簿保存到 EXCEL 2010中呢?

Sub FormatConnector2003(oConnector As Shape)
  With oConnector
    If .Connector Or .Type = msoLine Then
      ' rough approximation of the Excel 2007 preset line style #17
      .Line.EndArrowheadStyle = msoArrowheadTriangle
      .Line.Weight = 2
      .Line.ForeColor.RGB = RGB(192, 80, 77)
      .Shadow.Type = msoShadow6
      .Shadow.IncrementOffsetX -4.5
      .Shadow.IncrementOffsetY -4.5
      .Shadow.ForeColor.RGB = RGB(192, 192, 192)
      .Shadow.Transparency = 0.5
      .Visible = msoTrue
    End If
  End With
End Sub

Sub FormatConnector2007(oConnector As Shape)
  With oConnector
    If .Connector Or .Type = msoLine Then
      .Line.EndArrowheadStyle = msoArrowheadTriangle
      .ShapeStyle = msoLineStylePreset17
    End If
  End With
End Sub
于 2013-02-11T06:10:07.877 回答