VBA Вставить строку внизу таблицы и скопировать формулу прямо сверху - PullRequest
0 голосов
/ 12 марта 2020

У меня есть таблица, а в столбце A формула «ячейка выше + 1», поэтому A15 =$A14 + 1. В столбце B я скомпилировал все вкладки в «SheetName», чтобы на них можно было ссылаться, используя значение в столбце A, а затем превратил в гиперссылку.

A15 =HYPERLINK("#'"&INDEX(SheetNames,$A15)&"'!A1",INDEX(SheetNames,$A15)) Я хочу, чтобы VBA вставлял строку в в нижней части таблицы и скопируйте формулы сверху для всей строки (которая в моей электронной таблице от А до Я).

Private Sub CommandButton1_Click()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Dim tbl As ListObject
    Set tbl = ws.ListObjects("SUMMARY")

    Dim newrow As ListRow
    Set newrow = tbl.ListRows.Add
    With newrow
        .Cells(1).EntireRow.Copy
        .Offset(1).EntireRow.Insert Shift:=xlShiftUp, CopyOrigin:=xlFormatFromLeftOrAbove
        Application.CutCopyMode = False
    End With
End Sub

Я получаю ошибку «Ошибка времени выполнения» 438: объект не поддерживает это свойство или метод ". Кроме того, была скопирована только формула столбца A. Столбец B не копируется, столбец C говорит "#REF!" а остальные столбцы вообще не копируются.

1 Ответ

1 голос
/ 12 марта 2020

Я не совсем уверен, что вы пытаетесь сделать, ListRow не имеет метода Cells или Offset. Следующее добавит формулы из предыдущей строки в новую добавленную строку:

With newrow.Range
    .Formula = .Offset(-1).Formula
End With

, хотя в Excel есть опция сделать это автоматически, вот почему я запутался относительно вашей цели здесь.

enter image description here

РЕДАКТИРОВАТЬ:

Возможно, лучше следующее:

With newRow.Range
    .Offset(-1).Copy
    .Cells(1).PasteSpecial xlPasteFormulas
    Application.CutCopyMode = False
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...