2012-01-06 63 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