1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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) 建议生成后立刻运行一次,再另存为正式交付文件。