Excel VBA – 适合页面的列

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

所以如果这个报告有5个栏目,每个栏目都会说1.5英寸,如果有10个栏目,每个栏目都是0.75英寸宽。

谢谢。

您需要(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