【发布时间】:2021-05-03 09:01:46
【问题描述】:
我想更改一系列列的列宽,然后循环命令。例如,更改 col"B" ~ col"N" 的列宽,然后重复该过程直到最后一列有数据。 (我不想自动调整范围内的第一列)
但是,下面的命令不起作用,因为列范围设置不正确。我尝试使用 Range(Cells(1, 2), Cells(, colSize) 但这也不起作用。
Dim j As Integer
Dim colSize As Integer
colSize = 14
For j = 2 To Columns.Count Step colSize
Range(Columns(j), Columns(j + colSize - 1)).ColumnWidth.AutoFit
Next j
谢谢。
【问题讨论】:
-
AutoFit 是 Range 对象的方法,而不是 ColumndWidth 对象的方法。见AutoFit。所以试试
Range(Columns(j), Columns(j + colSize - 1)).AutoFit。此外,您不需要循环 - 您正在使用该语句更改所有列。循环将一直向右遍历整个工作表 - Columns.Count = 16384,当您尝试调整工作表的列的宽度时,最后 14 个将失败。 -
感谢您的评论。是的,Autofit 可以在没有 ColumnWidth 的情况下工作!我尝试了不同的方法,但事情变得一团糟......我循环的原因是因为我想避免自动调整每个 14 列块的第一列。但我意识到,在第一次自动调整列之后更容易调整。
标签: excel vba loops range column-width