重复更改列宽范围VBA Excel

问题描述

我想更改一系列列的列宽,然后循环执行命令。例如,更改 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

谢谢。

解决方法

也许不用循环,您可以简单地使用 Union 方法

     Application.Union(Columns("A:B"),Columns("D:L"),Columns("AA"),Columns("AC:AD"),Columns("AI:AJ"),Columns("AR"),Columns("AT"),Columns("BA"),Columns("BI"),Columns("BM")).Select
     Selection.ColumnWidth = 8

上面的例子来自工作表,其中包括从 A 到 CB 的工作表什么的。

您可以选择您需要的列(不一定按正确的顺序),然​​后设置它们的宽度。

,

为了在一定范围内改变列的宽度(这里,14 列作为一个块,并且想要自动调整块中的每 2 列 ~ 13 列),以下工作有效。但是自动调整似乎需要一些时间,因此,指定列宽可能会更好。

子 ColumnWidthChange()

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim colSize As Integer 'a block size
colSize = 14


For j = 2 To Columns.Count Step colSize
Range(Columns(j),Columns(colSize)).ColumnWidth = 11  'Range.AutoFit works but may take longer
Next j

'a space column in between blocks 
For i = colSize To Columns.Count Step colSize
Columns(i).ColumnWidth = 1
Next i

'the first column of each block
For k = 1 To Columns.Count Step colSize
Columns(k).ColumnWidth = 12
Next k

结束子

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...