Excel VBA复制到空白行

在VBA子程序中遇到一些困难,这些子程序将Excel工作簿的第一个工作表(“Entry”)中input的信息粘贴到同一工作簿中的单独工作表中 – “数据库”中。 我需要的是将数据添加到数据库的下一个空行。

我很欣赏这是一个很常见的问题,但我一直在谷歌上看到今天上午的最好的一部分,并不能得到它! 我到目前为止pipe理的代码将复制数据,但总是会覆盖第一行:

Sub CopyDataToDatabase() Application.ScreenUpdating = False Dim r As Range Set r = Sheets("Entry").Range("B6:M6") For Each cell In r If IsEmpty(cell) Then MsgBox ("Error - all boxes must be filled in!") Cancel = True Exit Sub Exit For End If Next Dim NextRow As Range Set NextRow = Sheets("Database").Range("A2:L2").End(xlUp).Offset(1, 0) ' Set NextRow = Sheets("Database").Range("A" & Rows.Count).End(xlUp).Row + 1 Sheets("Entry").Range("B6:M6").Copy NextRow.PasteSpecial (xlValues) MsgBox ("Data added successfully!") Sheets("Entry").Range("B6:M6").ClearContents Application.CutCopyMode = False Application.ScreenUpdating = True End Sub 

Set NextRow的注释是我尝试过的另一种方法,那是行不通的(错误是'Object required')。

任何帮助感激地收到,如果你能解释的话,更是如此 – 因为我对VBA有点新鲜感!

提前致谢。

您的注释行几乎是正确的方法。 尝试这个

 Set NextRow = Sheets("Database").Range("A" & Rows.Count).End(xlUp).Offset(1,0) 

有Sheet属性UsedRange ,但以我的经验很容易出错。 我总是这样做的方式是遍历行以find第一个空的。

 Dim iRow as integer iRow = 1 Dim ws as Worksheet Set ws = Worksheets("Database") Do While ws.Cells(iRow, 1) <> "" iRow = iRow + 1 Loop 

一般来说,在编写VBA代码时,我尽量避免使用Excel作为用户(例如使用Selection对象或模拟按键)来模拟我做什么。