专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
完美Excel  ·  使用deepseek自动合并“复杂的”Exc ... ·  4 天前  
完美Excel  ·  使用deepseek自动合并工作簿 ·  4 天前  
Excel之家ExcelHome  ·  WPS接入DeepSeek,无需配置,完全免费 ·  2 天前  
Excel之家ExcelHome  ·  筛选状态下算乘积,还不会的打屁屁 ·  2 天前  
Excel之家ExcelHome  ·  WPS表格中的AI函数,真牛 ·  3 天前  
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

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。






请到「今天看啥」查看全文