2015-02-10 34 views
0

我正在写一个报表宏来从数据库中提取数据并在Excel中输出数据。有时数据只能跨越几列,其他时候会有多达12列。有没有办法使VBA自动调整列,以便它占用整个页面宽度?Excel VBA - 适合页面到页面

所以,如果报告有5列,每个会说1.5“宽,如果有10列,每个将是.75”宽。

谢谢。

+0

最大化所有列的宽度,然后在页面设置缩放调整到:通过无1? – pnuts 2015-02-10 19:10:46

+0

你在说打印的页面吗? – 2015-02-10 19:22:47

+0

是打印页面。数据集只有几行但列数可变。我希望它能适用于整个页面上具有列数据的单个打印页面。 – JimC 2015-02-10 19:58:20

回答

1

您需要(1)将窗口宽度ActiveWindow.Width除以所需的列数。然后(2)将结果宽度应用于您想要适合的所有列。

w = ActiveWindow.Width/n 
Columns(1).Resize(, n).ColumnWidth = w 

但是,提防,这将工作,因为窗口宽度是和列宽为字符,所以你必须计算转换功能。

Function pointsToChars(x) As Integer 
    p = Range("A1").Width 
    c = Range("A1").ColumnWidth 
    pointsToChars = x * c/p 
End Function 

,最后调用它在你的代码

Sub ResizeColumnWidths(n) 
    w = ActiveWindow.Width/n 
    Columns(1).Resize(, n).ColumnWidth = pointsToChars(w) 
End Sub