Vba 使用模板行向表中添加行

Vba 使用模板行向表中添加行,vba,ms-word,Vba,Ms Word,我在word文档中有一个表,我正在尝试向其中添加一行。此附加行需要与用作模板的表中的第一行相同 让我们假设我的表正好有一行开始。我现在想添加一个具有相同规范的新行,然后合并所有3列。在这下面,我想添加一个额外的行,但是像第一行一样有3列。 我尝试的是: Dim oTemplateRow As Word.Row Set oTemplateRow = oTable.Rows(1) oTemplateRow.Range.Copy ' adds a row like the template one o

我在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

任何帮助都将不胜感激。

看来我现在能够回答我自己的问题了。虽然这可能不是最优雅的解决方案,但它解决了我的问题。我只是用 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
可能有点啰嗦,但对我有用。 当做 斯特凡