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
对象或模拟按键)来模拟我做什么。