发布
社区首页 >问答首页 >重复更改列宽范围(VBA Excel)

重复更改列宽范围(VBA Excel)
EN

Stack Overflow用户
提问于 2021-01-29 20:30:54
回答 2查看 167关注 0票数 0

我想更改一系列列的列宽,并循环执行该命令。例如,更改列“B”~列“N”的列宽,然后重复该过程,直到最后一列包含数据。(我不想自动调整范围中的第一列)

但是,下面的命令不起作用,因为列范围设置不正确。我曾尝试使用Range(Cells(1,2),Cells(,colSize) ),但也不起作用。

代码语言:javascript
代码运行次数:0
复制
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

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-01-29 20:48:57

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

代码语言:javascript
代码运行次数:0
复制
     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或其他的工作表。

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

票数 0
EN

Stack Overflow用户

发布于 2021-01-30 13:23:02

为了在一定范围内改变列的宽度(在这里,14列作为一个块,并且想要在块中每隔2到13列自动调整),下面的方法起作用。但是自动适应似乎需要一些时间,因此,指定列宽可能更好。

子ColumnWidthChange()

代码语言:javascript
代码运行次数:0
复制
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

结束子对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65954529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档