Excel 2016和更新的VBA:如何最大化图表内/到工作表的大小?



在https://i.stack.imgur.com/s6gII.png和如何获得面积的大小(宽度和高度)与excel vsto c#排除功能区?已经有人提出过类似的问题。

排除"内部/客户端"之外/周围的所有GUI元素。工作表区域,例如,没有"X/ok/fx"+单元格内容,工作表菜单,"就绪"+"记录宏";页脚线+框架高度,左右边框+框架宽度等

以及如何获得活动工作簿的屏幕位置?这两个链接都还没有满足我的需求。或者他们的指示对我不起作用,因为.PageSetup.*Margin值都不对应于我的工作表"内部/客户";或"外/GUI"边框+框架+开销大小。

我知道,写

With ActiveChart.Parent    'access the chart container = the Shape
.Left = 0
.Top = 0
.Width = 4 * 72         'fixed size example
.Height = 3 * 72        'fixed size example
End With

我可以设置图表位置+大小,在本例中为3 * 4英寸的固定大小。

但是如何获取/获取整个当前可见的动态工作表"inner/client"大小(至少一次方法调用)?

为了设置图表大小,使其覆盖/使用整个当前可见的动态工作表"inner/client"大小(至少一次方法调用)。希望:没有更多(不需要移动滚动条来查看整个图表),没有更少(没有不必要的"微小")。图表)?

[我知道,大小分配只对我"暂时"有效。]直到发生工作簿大小调整。所以我将不得不再次调整图表大小(一次又一次……)),例如通过使用计时器(或系统计时器)。还是有"锚/链/钉子"?chart属性,以便它始终与"内部/客户端"保持同步。工作表大小(在工作簿内)?]

谢谢你的帮助

这是你能做的最好的了。

Sub SizeChartToWindow()
Dim VisibleRange As Range
Set VisibleRange = ActiveWindow.VisibleRange

Dim UsableRange As Range
Set UsableRange = VisibleRange.Resize(VisibleRange.Rows.Count - 1, _
VisibleRange.Columns.Count - 1)

With ActiveChart.Parent
.Left = UsableRange.Left
.Top = UsableRange.Top
.Width = UsableRange.Width
.Height = UsableRange.Height
End With
End Sub

非常感谢,这对我帮助很大。

这也处理了工作表滚动条的"滚动",太棒了。

右边+底部0.00的余数…0.99 *单元格大小"足够好";(我已经减少了单元格的宽度,以匹配单元格的高度= 20像素,以减少剩余的效果)。

:)))

最新更新