在 MS Access 中设置 VBA Excel 图表图例位置属性不起作用

发布于 2024-12-10 02:05:36 字数 667 浏览 0 评论 0原文

这是我在 MS Access 2003 以编程方式创建一些 Excel 工作表时遇到的一个非常奇怪的问题。

使用此 VBA 代码片段,我无法设置 Excel 的 Position 属性Legend 对象(为了便于理解,省略了变量定义等)。

...
Set ChartObject = myWorksheet.ChartObjects.Add(myRange.Left, myRange.Top, myRange.width, myRange.Height)
Set Chart = ChartObject.Chart
Chart.HasLegend = True
'This line raises an error:
Chart.Legend.Position = -4107 '=xlLegendPositionBottom
...

MS Access 总是引发错误 1004:

“无法设置 Legend 类的 Position 属性”

令我困惑的是,我可以在 Exel VBA 中使用完全相同的代码,而且它可以正常工作。更让我困惑的是,可以设置属性 HasLegend 而不会发生任何错误。

有人有解决这个问题的提示吗?

This is a very strange issue I am facing for a while now, when creating some Excel worksheets programmatically from MS Access 2003.

Using this VBA-Code snippet I am not able to set the Position property of an Excel's Legend object (variable definitions and so on are left out to ease understanding).

...
Set ChartObject = myWorksheet.ChartObjects.Add(myRange.Left, myRange.Top, myRange.width, myRange.Height)
Set Chart = ChartObject.Chart
Chart.HasLegend = True
'This line raises an error:
Chart.Legend.Position = -4107 '=xlLegendPositionBottom
...

MS Access always raises the Error 1004:

"Unable to set the Position property of the Legend class"

It confuses me that I can use the exact same code from within Exel VBA and it just works. What confuses me even more is that the property HasLegend can be set whithout any error ocurring.

Someone has a hint to solve this issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏有森光若流苏 2024-12-17 02:05:36

在构建代码的通用版本后,我发现在 Office/Excel 2003 中,我必须在更改图例的位置之前将我的系列数据填充到图表中。可能该对象之前尚未启动。因此,我的代码应该如下所示:

...
Set ChartObject = myWorksheet.ChartObjects.Add(myRange.Left, myRange.Top, myRange.width,  myRange.Height)
Set Chart = ChartObject.Chart
Chart.HasLegend = True
...
Chart.SeriesCollection.Add myRange, 1 '=xlRows
'Now this works:
Chart.Legend.Position = -4107 '=xlLegendPositionBottom

After building a generic version of my code I found that in Office/Excel 2003 I have to populate my Series of data to the chart before changing the Legend's position. Probably the object hasn't been initiated before. My Code should therefore look like this:

...
Set ChartObject = myWorksheet.ChartObjects.Add(myRange.Left, myRange.Top, myRange.width,  myRange.Height)
Set Chart = ChartObject.Chart
Chart.HasLegend = True
...
Chart.SeriesCollection.Add myRange, 1 '=xlRows
'Now this works:
Chart.Legend.Position = -4107 '=xlLegendPositionBottom
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文