Excel Selection.copy然后仅插入带有公式的行

Excel Selection.copy然后仅插入带有公式的行,excel,vba,Excel,Vba,在Excel中选择单元格后,我尝试仅使用公式插入新行 这就是我想做的 Sub InsertNewRow() ActiveCell.EntireRow.Select Selection.Copy Selection.Insert Shift:=xlDown Application.CutCopyMode = False End Sub 上面代码的结果是插入一个新行,但包含已复制的所有值和公式。是否有办法删除所有值并仅维护公式 编辑 根据@Tom的建议,我得出了一个

在Excel中选择单元格后,我尝试仅使用
公式插入新行

这就是我想做的

Sub InsertNewRow()
    ActiveCell.EntireRow.Select
    Selection.Copy
    Selection.Insert Shift:=xlDown
    Application.CutCopyMode = False
End Sub
上面代码的结果是插入一个新行,但包含已复制的所有值和公式。是否有办法删除所有值并仅维护公式

编辑

根据@Tom的建议,我得出了一个结论

ActiveCell.EntireRow.Select
Selection.Insert
Selection.Offset(1, 0).EntireRow.Copy
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

但是它仍然复制所有的值和公式,有没有办法只复制公式并删除值?

请测试下一个代码。无需在代码中选择

Sub InsertNewRow()
   Dim rng As Range, cel As Range

    Set rng = Range(ActiveCell, Cells(ActiveCell.row, Cells(ActiveCell.row, Columns.Count).End(xlToLeft).Column))
    rng.Copy
    ActiveCell.EntireRow.Insert Shift:=xlDown
    For Each cel In rng
        If Not cel.HasFormula Then cel.ClearContents
    Next
End Sub
编辑:和下一个变体(由于…,更短更优雅):


看看
.PasteSpecial
AutoFill
我只想问你@Tom。我是否应该
复制
插入
然后
粘贴特殊
?是。复制所需的行。插入新行数,然后粘贴到该目的地谢谢我会立即尝试。您可以使用
Range.SpecialCells
隔离值并清除它们。尝试5小时后,我现在可以告诉您。。。我想我爱你。真正地nice@ChangeWorld:很高兴我能帮忙!我编辑了代码答案并添加了一个较短的变体。。。
Sub InsertNewRow()
   Dim rng As Range

    Set rng = Range(ActiveCell, Cells(ActiveCell.row, Cells(ActiveCell.row, Columns.Count).End(xlToLeft).Column))
    rng.Copy
    ActiveCell.EntireRow.Insert Shift:=xlDown
    rng.SpecialCells(xlCellTypeConstants).ClearContents
End Sub