我在word文档里使用网上一段宏语言批量设置标题行重复,语言如下:
Sub 全部标题行重复()
Dim oTable As Table
If ActiveDocument.ProtectionType <> wdNoProtection Then Exit Sub
Application.ScreenUpdating = False
For Each oTable In ActiveDocument.Tables
oTable.Select
Call 单体表格格式
Next
Application.ScreenUpdating = True
End Sub
Sub 单体表格格式()
' 表格2 宏
With Selection.Tables(1)
.Rows(1).HeadingFormat = True
End With
End Sub
遇到问题是碰到有合并单元格的表格无法选择第一行,想请教专家们,如何修改一下,
如果 碰到错误不能选择第一行的
则 选择两行 或者 跳过这个表格继续选择下一个表格 直到全选,
设置所有表格的标题行重复。
如果碰到有合并单元格的表格,不能选择第一行,可以修改以下语句:
.Rows(1).HeadingFormat = True
改为:
For i = 1 To .Rows.Count
If .Rows(i).Cells(1).MergeCells = False Then
.Rows(i).HeadingFormat = True
Exit For
End If
Next
这样,程序会在遇到有合并单元格的表格时,从第一行开始循环查找,直到找到没有合并单元格的行,将其设置为标题行重复。
如果要跳过这个表格继续选择下一个表格,可以在循续上面的代码,在循环结束后,添加一个 if 语句,如果没有找到没有合并单元格的行,就直接跳过这个表格继续选择下一个表格。例如:
For i = 1 To .Rows.Count
If .Rows(i).Cells(1).MergeCells = False Then
.Rows(i).HeadingFormat = True
Exit For
End If
Next
If .Rows(i).Cells(1).MergeCells = True Then
' 跳过这个表格继续选择下一个表格
Exit Sub
End If
这样,程序在遇到有合并单元格的表格时,会跳过这个表格继续选择下一个表格,设置所有表格的标题行重复。
当然,这只是一种思路,还有其它方法可以解决这个问题。例如,可以在循环中添加一个计数器,如果计数器超过某个阈值(例如,超过 10 行),就直接跳过这个表格继续选择下一个表格。
总之,具体的实现方法取决于你的需求,你可以根据实际情况进行选择。