我编写了一些自动创建图表的 VBA 代码。此图表上的一个轴不使用普通标签,而是使用图形。我已将图形存储为图像,并使用 .Copy 和 .Paste 方法将此图像的副本复制到图表上。
这是令人困惑的地方。我需要旋转图像以使其与轴对齐(使用 .rotation 属性)。但是当我设置 .top 和 .left 属性时,形状并没有达到我期望的位置。事实上,将属性设置为 0 和 0 也不符合我的预期。我尝试更改在图像对象上设置属性的方式的顺序,但它只出现在不同的(错误的)位置。
我确定我错过了 VBA/Excel 如何相对于我将顶部和左侧属性设置为的对象放置的一些重要方面。基本上我的目标是使图表左侧的图像具有与绘图区域的高度相同的宽度(由于图像被旋转,我推测这将使其大小相同)。
此代码不起作用:
Sheets(ImageSheet).Shapes("agreement").Copy
c.Chart.Paste
c.Chart.Shapes(1).Rotation=270
c.Chart.Shapes(1).width = c.Chart.PlotArea.height
c.Chart.shapes(1).left = 5
c.Chart.Shapes(1).top = c.Chart.PlotArea.top
我也试过这段代码
c.chart.Shapes(1).top = c.chart.PlotArea.top + c.Chart.PlotArea.height
因为我认为它可能在不旋转时将“顶部”计算为图像对象的左上角(旋转 270 度使该点位于应与绘图区域底部对齐的位置)。但这也没有达到我的预期。
该图像是一个细长的矩形,用作轴的标签。该图表最终将像这样布置:http: //imgur.com/NrSXR轴标签图像将是这样的http://imgur.com/08EWU
我在这里想念什么?