VBA:如何在表中创建新行以复制格式和公式

时间:2018-09-11 14:30:51

标签: excel vba excel-vba

我已经创建了一个表格(客户投诉)。我想创建一个宏,允许用户每次有新投诉时添加新行。该行应复制上一行的格式,公式和数据验证选项,但不能复制任何硬编码项。我已经创建了这段代码,但是它复制的是整个行,而不是公式,格式和数据验证。

有什么建议吗?

Sub Add_new_item()

  ' Go to last cell
  Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select

  ' Copy formula from cell above
  Rows(Selection.Row - 1).Copy
  Rows(Selection.Row).Insert Shift:=xlDown


End Sub

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以在插入新行后添加.ClearContents

Sub Add_new_item()

    ' Go to last cell
    Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select

    ' Copy formula from cell above
    Rows(Selection.Row - 1).Copy
    Rows(Selection.Row).Insert Shift:=xlDown
    Rows(Selection.Row).ClearContents

    Application.CutCopyMode = False

End Sub

此外,最好以Application.CutCopyMode = False结尾以清除剪贴板。

答案 1 :(得分:0)

更简单的非VBA解决方案是使用表格。如果您要做的只是保留格式和公式,那么Table会为您做所有事情,而无需任何代码。只要您的数据具有唯一的列标题,就应该行得通。选择要用作表的数据范围(包括列标题),然后单击ctrl + t。将显示一个对话框,要求您选择要使用的范围(将已经有选择项)和“我的表格有标题”复选框,以指示您是否要使用列标题(选中此框)。点击“确定”。您现在有了一个表。只需单击第一个空白单元格并开始输入,就会添加新行以及以前行具有的所有格式和公式。

Table