Sub 美化表格()
Dim tbl As Table
Dim cel As Cell
Dim para As Paragraph
Dim r As Row ' 显式声明行变量
' 确保光标在表格内
If Not Selection.Information(wdWithInTable) Then
MsgBox "请将光标放在要美化的表格内!"
Exit Sub
End If
Set tbl = Selection.Tables(1)
If tbl Is Nothing Then Exit Sub
' 1. 自动适应窗口
On Error Resume Next ' 临时忽略可能的小错误,后续再恢复
tbl.AutoFitBehavior (wdAutoFitWindow)
On Error GoTo 0
' 2. 设置表格宽度(若表格存在)
If tbl.Rows.Count > 0 Then
' tbl.PreferredWidth = 675 ' 单位磅,可自行调整
End If
' 3. 设置所有行高为最小值(自动)
' For Each r In tbl.Rows
' r.HeightRule = wdRowHeightAtLeast
' r.Height = 0.01 ' 厘米
' Next r
' 4. 单元格垂直居中 + 段落格式重置(居中 + 单倍行距 + 缩进清零)
For Each cel In tbl.Range.Cells
cel.VerticalAlignment = wdCellAlignVerticalCenter
For Each para In cel.Range.Paragraphs
With para
.Alignment = wdAlignParagraphCenter
.LineSpacingRule = wdLineSpaceSingle
.LeftIndent = 0
.RightIndent = 0
.FirstLineIndent = 0
.CharacterUnitLeftIndent = 0
.CharacterUnitRightIndent = 0
.CharacterUnitFirstLineIndent = 0
.FirstLineIndent = CentimetersToPoints(0)
End With
Next para
Next cel
' 5. 设置第一行为标题行(重复)——需确保至少有一行
' If tbl.Rows.Count >= 1 Then
' tbl.Rows(1).HeadingFormat = True
' End If
' 6. 第一行内容左对齐(可根据需求改为左对齐)
If tbl.Rows.Count >= 1 Then
On Error Resume Next
Dim rw As Row
Set rw = tbl.Range.Rows(1) ' 改用 Range.Rows(1)
On Error GoTo 0
If Not rw Is Nothing Then
For Each cel In rw.Cells
For Each para In cel.Range.Paragraphs
para.Alignment = wdAlignParagraphCenter
' wdAlignParagraphLeft
Next para
Next cel
End If
End If
' 7. 段落格式:禁用行高网格 + 与下段同页
With tbl.Range.ParagraphFormat
.DisableLineHeightGrid = True
.KeepWithNext = False '不能分页
End With
' 8. (可选)设置列宽为固定点数,这里按需求开启
' Dim col As Column
' For Each col In tbl.Columns
' col.Cells.PreferredWidthType = wdPreferredWidthPoints
' col.Cells.PreferredWidth = 100 ' 各列统一宽度,可按列索引单独设
' Next col
' MsgBox "表格美化完成!"
End Sub
夜雨聆风