使用模板行向表中添加行

时间:2012-01-06 17:10:08

标签: ms-word word-vba

我在word文档中有一个表,我正在尝试添加一行。此附加行必须与表中用作模板的第一行相同。

我们假设我的表只有一行开头。我现在想添加一个具有相同规范的新行,然后合并所有3列。在那之下我想添加一个额外的行,但是再次有3列,就像第一行一样。 我尝试了什么:

Dim oTemplateRow As Word.Row
Set oTemplateRow = oTable.Rows(1)
oTemplateRow.Range.Copy
' adds a row like the template one
oTable.Rows.Last.Range.Paste

到目前为止,这么好。但是,如果我现在合并该行中的单元格然后重复粘贴,则新行显示之前之前添加的行,即使之前的范围崩溃 - 这是我不明白的。

oTable.Rows.Last.Cells.Merge
oTable.Rows.Last.Range.Collapse Direction:=wdCollapseEnd  
oTable.Rows.Last.Range.Paste
oTable.Rows.Last.Range.Collapse Direction:=wdCollapseEnd

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

看来我现在能够回答我自己的问题了。虽然它可能不是最优雅的解决方案,但它解决了我的问题。我只是用过     oTable.Rows.Add 在创建初始行之后,因此在下面创建一个精确的副本。当我需要添加一行时,我会重复这个过程并继续处理前一个过程。

Private Function addRow(ByRef oRow As Word.Row, Optional iNumberColumns As Integer = 3)
    ' add a row to the end, then work on the one before that
    oTable.Rows.Add
    Set oRow = oTable.Rows(oTable.Rows.Count - 1)
    ' if number of columns is 1 merge 2 to 4, if 2 merge 3 to 4
    Select Case iNumberColumns
        Case 1
            oRow.Cells(2).Merge MergeTo:=oRow.Cells(4)
        Case 2
            oRow.Cells(3).Merge MergeTo:=oRow.Cells(4)
    End Select
End Function

可能有点长,但对我有用。 问候 斯蒂芬