2012-01-06 58 views
1

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

任何帮助将不胜感激。

回答

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 

可能有点长,但适合我。 Registers Stefan