Word VBA如何仅为第二页之后的表格设置指定字体样式
问题分析
- 直接调用
Range对象没有指定作用范围,Word VBA中全局Range默认指代整个文档内容,因此哪怕增加了选中区域是否在表格的判断,最终还是会修改全文字体 - 代码仅针对当前选中的区域做判断,没有遍历文档内的所有表格,也没有增加页码判断逻辑,完全无法匹配「第二页之后所有表格设置字体」的需求
修正后的代码
Sub defaultFontStyling() Dim tbl As Table ' 关闭屏幕更新提升运行速度 Application.ScreenUpdating = False ' 遍历当前文档所有表格 For Each tbl In ThisDocument.Tables ' 判断表格所在页码是否大于1(即第二页及之后) If tbl.Range.Information(wdActiveEndAdjustedPageNumber) > 1 Then ' 设置表格内字体样式 tbl.Range.Font.Name = "Calibri" tbl.Range.Font.Size = 11 End If Next tbl ' 恢复屏幕更新 Application.ScreenUpdating = True End Sub
代码逻辑说明
- 遍历当前文档内的所有表格对象
- 通过
Information(wdActiveEndAdjustedPageNumber)属性获取每个表格所在的页码 - 仅对页码大于1(即第二页及之后)的表格设置字体为Calibri、字号11
- 完全不会影响文档内其他非表格内容,也不会修改第一页的内容
内容的提问来源于stack exchange,提问作者User1
相关产品推荐
相关产品推荐

