我想在ms-Word文件中设置所有表格,并在每个页面上显示重复的标题。
但是我发现如果一个表(在下面的代码中有一个idx索引)合并了行,那么
ActiveDocument.Tables(idx).Rows(1).HeadingFormat = True
失败并说
方法"项目"对象"行"失败
任何提示?感谢
答案 0 :(得分:0)
您可以通过选择要重复的单元格(行)来解决这个问题 - 这就是它在用户界面中的工作方式/原因。当然,棘手的部分是知道表格的“形状”,以便正确地进行选择。
如果您不知道这种情况,也许最好的方法是使用错误处理,以便宏可以“提示”您提供构成重复行的单元格数。这是一种方法。
(注意:除了显示某种消息之外,暂停宏的执行是不可能的。如果你想等到用户实际可以在表中进行选择,那么宏需要重新启动。 )
Sub SetHeaderRepeatWithMergedRows()
Dim tbl As word.Table
Dim errNr As Long
Dim nrCells As Variant
Dim startCell As word.Range
Dim endCell As word.Range
'Cannot access individual rows in this collection because
'table has vertically merged cells
errNr = 5991 'or? method "item" of object "rows" failed
nrCells = "none"
On Error GoTo handler
For Each tbl In ActiveDocument.Tables
tbl.Rows(1).HeadingFormat = True
Next
Exit Sub
handler:
Select Case Err.Number
Case errNr
'Rows with vertically merged cells can only be set
'as Header Rows on the Selection, so select the
'necessary number of cells by prompting the user
Do
'Make sure the table is visible to the user:
tbl.Range.Document.ActiveWindow.ScrollIntoView tbl.Range, True
nrCells = InputBox("How many cells make up the table header:")
If IsNumeric(nrCells) Then
tbl.Cell(1, 1).Range.Select
Selection.MoveEnd wdCell, nrCells - 1
Selection.Rows.HeadingFormat = True
End If
Loop Until IsNumeric(nrCells)
nrCells = "none"
Resume Next
Case Else
MsgBox Err.Number & vbCr & Err.Description & _
vbCr & "The macro will end, now"
End Select
End Sub