2012-01-06 16 views
1

私は行を追加しようとしている単語文書にテーブルを持っています。この追加の行は、テンプレートとして機能するテーブルの最初の行と同じである必要があります。テンプレート行を使用してテーブルに行を追加する

私のテーブルの先頭には、ちょうど1つの行があるとします。同じ仕様の新しい行を追加し、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 

私はちょっと長いかもしれませんが、私のために働きます。 よろしくお願いいたします。 Stefan

関連する問題