我正在编写一个报表宏来从数据库中提取数据并在Excel中输出数据。有时,数据只会跨越几列,有时则会有多达12列。有没有办法让VBA自动调整列,以便它占用整个页面宽度?
因此,如果报告有5列,每个列的宽度为1.5“,如果有10列,则每列宽度为0.75”。
感谢。
答案 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