【问题标题】:Excel VBA - Fit columns to pageExcel VBA - 使列适合页面
【发布时间】:2015-02-10 19:05:45
【问题描述】:

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

因此,如果报表有 5 列,则每列宽 1.5 英寸,如果有 10 列,则每列宽 0.75 英寸。

谢谢。

【问题讨论】:

  • 你说的是打印页面吗?
  • 是的打印页面。数据集只有几行,但列数可变。我希望它全部适合单个打印页面,列数据横跨整个页面。

标签: vba excel


【解决方案1】:

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

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

但是,当心,这将不起作用,因为窗口宽度以 points 为单位,而列宽以 chars 为单位,所以你必须计算一个转换函数。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多