将最后一条记录复制并粘贴到第一个空白行的VBA

时间:2015-10-28 08:06:35

标签: excel vba excel-vba

我是VBA的新手,所以我的查询可能(希望)是一个简单的!

我有一个大型客户端详细信息数据库,想要为工作表编写一个宏,找到最后一个非空行,复制行,然后将'format'和'validation'粘贴到第一个空行。我希望宏能够一直自动运行(因此第一个空行将始终具有与上面的行相同的格式等,即使添加了更多客户端)。

到目前为止,我已经写了这个,当我按Run Sub时它第一次工作,但是如果我在最后一个空白行中添加细节,我会收到错误。当我尝试调试时,它突出显示'复制最后一行:

之后的行
Private Sub Worksheet_Change(ByVal Target As Range)

    'Copy last row

        Range("C" & Rows.Count).End(x1Up).Rows.Select
        Selection.Copy

    'Paste format and validation into next blank row

        Range("C" & Rows.Count).End(x1Up).Offset(1).Rows.Select
            Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Selection.PasteSpecial Paste:=xlPasteValidation, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False

End Sub

另外,我正在运行基于列“C”的代码,因为这是一个必填字段,所以任何记录都不会为空。

1 个答案:

答案 0 :(得分:1)

如果您使用Range.FillDown method然后清除新行上的单元格内容(Range.ClearContents method),则应保留单元格格式和数据验证。

with Range("C" & Rows.Count).End(xlUp).resize(2, 1).entirerow
    .filldown
    with .offset(1, 0)
        .clearcontents
    end with
end with