【问题标题】:AutoFitting Columns With Maximum Width Condition?具有最大宽度条件的自动调整列?
【发布时间】:2019-11-01 08:52:09
【问题描述】:

在 VBA 中,我想格式化整个工作簿中的列以自动调整数据,但最大宽度为 50 或 75(对于哪个宽度没有偏好,50 或 75 只是建议)。我想这样做是因为我的一些字段可能有很长的值,而且我不想让滚动工作簿变得困难。我不想只添加最大宽度,因为我希望自动调整小于该宽度的单元格。

我有代码使用 VBA 代码中的循环自动调整列,但不知道如何添加最大宽度条件。

我目前的代码如下:

Dim sht As Worksheet
Sheets("Index").Select
  On Error Resume Next
    For Each sht In ThisWorkbook.Worksheets
      sht.Cells.SpecialCells(xlCellTypeVisible).EntireColumn.AutoFit
    Next sht
On Error GoTo 0

没有错误消息,代码运行良好。但是,我需要添加最大宽度条件,我不确定如何。

【问题讨论】:

标签: excel vba formatting


【解决方案1】:

您可能需要遍历已使用的列以一次更改其宽度:

Sheets("Index").Select
  On Error Resume Next
    For Each sht In ThisWorkbook.Worksheets
      sht.Cells.SpecialCells(xlCellTypeVisible).EntireColumn.AutoFit
         For c = sht.UsedRange.Column To sht.UsedRange.SpecialCells(xlCellTypeLastCell).Column
             If sht.Cells(1, c).ColumnWidth > 75 Then sht.Cells(1, c).ColumnWidth = 75
         Next c
    Next sht
  On Error GoTo 0

【讨论】:

  • 不错,加1,如果借用请见谅:)
  • 可能有更简单的方法来做到这一点。如果工作表有很多宽列,这可能会非常慢。
  • @GregViers 我运行了你的代码并没有出现错误消息,但它并没有将列宽减少到 75。我在我的 sub 顶部写了“dim c”,所以我知道那里没有问题。关于为什么它不起作用的任何想法?不过,您的代码非常有帮助!打下良好的基础。
  • 其中有一个错误。我引用的是activeSheet,而不是sht。我已经修好了。
  • @GregViers 嗯,不知道为什么,但它仍然无法正常工作。我的一张工作表上有一个宽度为 255 的列。那是第 15 个工作表,所以也许只是需要一段时间?同样,没有错误消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
相关资源
最近更新 更多