在不调整 plotArea 大小的情况下更改图表高度
Change chart height without resizing plotArea
我正在尝试使用 VBA 调整 excel 图表的大小。
是否可以在不影响 PlotArea
大小的情况下更改 ActiveChart.ChartArea.Height
?每当我尝试更改图表高度时,绘图区域似乎会自动调整大小,这是一个不希望的结果。
缩小图表尺寸时,我尝试了以下顺序:
- 正在将
plotarea
更改为固定的所需高度;
- 正在将
chart
高度更改为固定的所需高度;
- 正在将
plotarea
更改为固定的所需高度;
此序列未产生预期结果,因为 (1) chart
未更改为指定高度,并且 (2) plotarea
高度输出正确,但它在图表 (.InsideTop
) 中的位置已更改。
请测试下一种处理图表维度的方法。该场景涉及下一个过程:首先记住 PlotArea 维度(Height/Width),然后使用图表(对象)维度,重置 PlotArea 维度并将其 Position 设置为 Automatic。 Excel 尝试猜测您想要完成什么,looks/is 更有可能按比例修改两个图表元素:
Sub testActiveChartDimensions()
Dim ch As Chart, plHeight As Double, plWidth As Double
Set ch = ActiveChart 'plays with a selectded chart
plHeight = ch.PlotArea.height: plWidth = ch.PlotArea.width 'memorize the plot area dimensions
ch.Parent.height = ch.Parent.height * 2: ch.Parent.width = ch.Parent.width * 2 'resize the chartObject
ch.PlotArea.height = plHeight: ch.PlotArea.width = plWidth 'reset the initial dimensions for plot area
' you can set any other dimensions (just to be lower than the new chart dimensions...)
ch.PlotArea.Position = xlChartElementPositionAutomatic 'center it on the chart object
End Sub
我正在尝试使用 VBA 调整 excel 图表的大小。
是否可以在不影响 PlotArea
大小的情况下更改 ActiveChart.ChartArea.Height
?每当我尝试更改图表高度时,绘图区域似乎会自动调整大小,这是一个不希望的结果。
缩小图表尺寸时,我尝试了以下顺序:
- 正在将
plotarea
更改为固定的所需高度; - 正在将
chart
高度更改为固定的所需高度; - 正在将
plotarea
更改为固定的所需高度;
此序列未产生预期结果,因为 (1) chart
未更改为指定高度,并且 (2) plotarea
高度输出正确,但它在图表 (.InsideTop
) 中的位置已更改。
请测试下一种处理图表维度的方法。该场景涉及下一个过程:首先记住 PlotArea 维度(Height/Width),然后使用图表(对象)维度,重置 PlotArea 维度并将其 Position 设置为 Automatic。 Excel 尝试猜测您想要完成什么,looks/is 更有可能按比例修改两个图表元素:
Sub testActiveChartDimensions()
Dim ch As Chart, plHeight As Double, plWidth As Double
Set ch = ActiveChart 'plays with a selectded chart
plHeight = ch.PlotArea.height: plWidth = ch.PlotArea.width 'memorize the plot area dimensions
ch.Parent.height = ch.Parent.height * 2: ch.Parent.width = ch.Parent.width * 2 'resize the chartObject
ch.PlotArea.height = plHeight: ch.PlotArea.width = plWidth 'reset the initial dimensions for plot area
' you can set any other dimensions (just to be lower than the new chart dimensions...)
ch.PlotArea.Position = xlChartElementPositionAutomatic 'center it on the chart object
End Sub