Добавление строки в таблицу с использованием строки шаблона - PullRequest
1 голос
/ 06 января 2012

У меня есть таблица в текстовом документе, в которую я пытаюсь добавить строку. Эта дополнительная строка должна совпадать с первой строкой таблицы, которая служит шаблоном.

Давайте предположим, что в моей таблице ровно одна строка. Теперь я хотел бы добавить новую строку с теми же характеристиками, а затем объединить все 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 Ответ

2 голосов
/ 09 января 2012

Похоже, что теперь я могу ответить на свой вопрос. Хотя это может быть не самое элегантное решение, оно решает мою проблему. Я просто использовал 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

...