VBA 宏:生成汇总大表(或任意工作簿)全工作表列宽自适应
|
日期:2026-09-08
|
说明:打开要处理的 xlsx → Alt+F11 → 菜单“插入→模块” → 粘贴以下代码 → 关闭编辑器 → Alt+F8 运行 AutoFitAllSheets。
|
也可将本文件另存为 .bas,在 VBA 编辑器里“文件→导入文件”。
|
|
--------------------------------------------------------------------------------
|
Option Explicit
|
|
' 主宏:对全部工作表做整列列宽自适应(公式先整体重算,以显示值宽度为准)
|
Public Sub AutoFitAllSheets()
|
Application.ScreenUpdating = False
|
Application.Calculation = xlCalculationAutomatic
|
Application.CalculateFullRebuild
|
Dim ws As Worksheet
|
For Each ws In ThisWorkbook.Worksheets
|
ws.Activate
|
On Error Resume Next
|
' 自动适应整列宽度(隐藏行/列不影响;合并单元格内的文字不会被 Excel 自动计入)
|
ws.Cells.EntireColumn.AutoFit
|
On Error GoTo 0
|
Next ws
|
Application.ScreenUpdating = True
|
MsgBox "全部工作表列宽自适应完成。", vbInformation, "完成"
|
End Sub
|
|
' 备用宏:只对“当前选中的工作表”执行自适应
|
Public Sub AutoFitActiveSheet()
|
Application.ScreenUpdating = False
|
Application.CalculateFullRebuild
|
ActiveSheet.Cells.EntireColumn.AutoFit
|
Application.ScreenUpdating = True
|
MsgBox "当前表列宽自适应完成。", vbInformation, "完成"
|
End Sub
|
--------------------------------------------------------------------------------
|
|
注意:
|
1) 运行前先全选看一遍是否有“###”溢出列;若个别列因合并标题仍偏窄,可手动拖一下该列。
|
2) 本宏只改列宽,不改任何数据、公式、底色与边框。
|
3) 建议生成后立刻运行一次,再另存为正式交付文件。
|