Excel VBA - 使列适合页面

时间:2015-02-10 19:05:45

标签: excel vba excel-vba

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

因此,如果报告有5列,每个列的宽度为1.5“,如果有10列,则每列宽度为0.75”。

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

但是,要小心,这将工作,因为窗口宽度在 points 中,列宽在字符中,因此您必须计算转换函数。

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