专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
完美Excel  ·  VBA:自动调整列宽,但设置一个限制 ·  3 天前  
Excel之家ExcelHome  ·  运用AI实现Excel和PPT增效 ·  2 天前  
Excel之家ExcelHome  ·  几个Excel技巧,操作简单效果好 ·  4 天前  
Excel之家ExcelHome  ·  这些Excel函数教程,竟然全是ChatGP ... ·  2 天前  
Excel之家ExcelHome  ·  快速提取文件夹内的文件名 ·  6 天前  
51好读  ›  专栏  ›  完美Excel

VBA:自动调整列宽,但设置一个限制

完美Excel  · 公众号  · Excel  · 2024-11-04 05:39

正文

学习Excel技术,关注微信公众号:

excelperfect


标签:VBA

Excel中有一个“自动调整列宽”功能,选择单元格或单元格区域或全部单元格后,单击功能区“开始”选项卡“单元格”组中的“格式——自动调整列宽”,可以将超出默认或设置的列宽的列调整为适应输入的文本的长度。

然而,如果某列或某些列中的文本太长,则会破坏工作表的整体观感,我们可以限制这些列在调整时不能超过某个宽度。使用VBA来实现,代码如下:

Sub AutoFitAllColumns() Dim c As Long Dim ws As Worksheet Dim lnumCols As Long Dim lMaxWidth As Long  Set ws = ActiveSheet lnumCols = ws.UsedRange.Columns.Count lMaxWidth = 35  With ws   .Columns.AutoFit   For c = 1 To lnumCols     If .UsedRange.Columns(c).ColumnWidth > lMaxWidth Then       .UsedRange.Columns(c).ColumnWidth = lMaxWidth     End If   Next c End With
Set ws = NothingEnd Sub

也可以将上述代码转换为自定义函数,让用户指定要自动调整列宽的工作表及最大调整的列宽宽度。代码如下:

Function AutoFitAllColumns(ws As Worksheet, lMaxWidth As Long) Dim c As Long Dim lnumCols As Long  lnumCols = ws.UsedRange.Columns.Count
With ws .Columns.AutoFit For c = 1 To lnumCols     If .UsedRange.Columns(c).ColumnWidth > lMaxWidth Then .UsedRange.Columns(c).ColumnWidth = lMaxWidth End If Next c End WithEnd Function

使用下面的代码来测试效果:

Sub test()  AutoFitAllColumns Sheet1, 60End Sub

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。