Вставить строку с формулами ниже активной ячейки - PullRequest
0 голосов
/ 18 марта 2020

Я использую этот код, чтобы добавить строку под выбранной ячейкой. Есть ли способ изменить его так, чтобы он вставлял формулы в столбцы E, G и H (например: = IF (G4 = "", "", G4 * 73)), но очищал содержимое ячеек в столбцах AD , F?

Sub BlankLine_copy()
lrow = Selection.Row()
Rows(lrow).Select
Selection.Copy
Rows(lrow + 1).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = True
'Selection.ClearContents
End Sub

Или, может быть, просто вставьте строку ниже, но просто скопируйте формулы вниз?

Ответы [ 2 ]

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

Честно говоря, я бы подумал, что есть вариант PasteSpecial, который копирует формулы, но не значения, но если есть, я не нашел его. Код ниже делает работу, однако. Пожалуйста, попробуйте

Sub BlankLine_copy()

    Dim R As Long
    Dim C As Long

    R = Selection.Row
    With Rows(R)
        .Copy
        .Insert Shift:=xlDown
    End With
    Application.CutCopyMode = False

    R = R + 1
    For C = Cells(R, Columns.Count).End(xlToLeft).Column To 1 Step -1
        With Cells(R, C)
            If Not .HasFormula Then .ClearContents
        End With
    Next C
    Cells(R, 1).Select
End Sub
0 голосов
/ 18 марта 2020

Может быть легче обойтись без таких петель

Sub Test()
Dim r As Long

r = Selection.Row
With Rows(r)
    .Copy
    .Insert Shift:=xlDown
End With
Application.CutCopyMode = False

Rows(r + 1).SpecialCells(xlCellTypeConstants).ClearContents
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...