VBA: ошибка 1004 объединенных ячеек при копировании данных в таблицу - PullRequest
0 голосов
/ 22 февраля 2019

Цель состоит в том, чтобы скопировать диапазон данных в существующую таблицу, где таблица сначала удаляет старые данные.У меня есть дополнительный код, но это часть кода, которая обрабатывает данные таблицы.Важное примечание: копируемый диапазон НЕ содержит объединенные ячейки.Я проверил и дважды проверил.Однако непосредственно под таблицей, в которую я вставляю, есть объединенные ячейки, если это имеет значение.

Sub updateData()
   Dim ws as worksheet, Tws as worksheet
   Dim tbl as listobject
   Set ws = thisworkbook.worksheets(1)
   Set Tws = thisworkbook.Sheets(2)
   Set tbl = Ws.ListObjects(1)

                        With tbl ' Deleting data from current table in the worksheet
                            If Not .DataBodyRange Is Nothing Then
                                .DataBodyRange.Delete
                            End If
                            .ListRows.Add
                        End With
                    fr = WorksheetFunction.Match("LookUpValue", Ws.Columns(1), 0) - 3 ' First row
                    fc = 1 ' First column
                    lc = Tws.Cells(fr, fc).End(xlToRight).Column ' Last column
                    lr = Tws.Cells(fr, fc).End(xlDown).Row - 3 ' Last row
                    Set NewData = Tws.Range(Tws.Cells(fr, fc), Tws.Cells(lr, lc))
                    NewData.Copy tbl.DataBodyRange(1, 1) ' WORKING CODE (overwrites merged cells)
                    Application.CutCopyMode = False
End sub

РЕДАКТИРОВАТЬ: просто чтобы уточнить полученную ошибку, ошибка времени выполнения '1004': сделатьпри этом все объединенные ячейки должны быть одинакового размера

2-е РЕДАКТИРОВАНИЕ: Благодаря @siddarth routh у меня есть рабочий код.Лично вместо NewData.Copy tbl.DataBodyRange(1, 1), который отлично подходит для перезаписи объединенных ячеек, я решил разомкнуть ячейки ниже, чтобы вставить строки между ними и использовать строки

 NewData.Copy
 tbl.DataBodyRange(1, 1).PasteSpecial

, чтобы продолжить форматирование и не перезаписывать мои ячейки.

1 Ответ

0 голосов
/ 22 февраля 2019

Использование

NewData.Copy
tbl.DataBodyRange(1, 1).PasteSpecial

и расстановка ячеек под моей таблицей работает.Кроме того, я добавил строку .listrows.add в мое предложение with tbl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...