繁体   English   中英

Excel VBA复制到空白行

[英]Excel VBA Copying to Blank Row

VBA子例程遇到一些困难,该子例程需要将在Excel工作簿的第一张工作表中输入的信息-“ Entry”,并将其粘贴到同一工作簿-“数据库”中的单独工作表中。 我需要将数据添加到数据库的下一个空行中。

非常感谢,这是一个很普遍的问题,但是今天上午我一直在Google上寻找最好的部分,实在无法理解! 到目前为止,我管理的代码将复制数据,但始终会覆盖第一行:

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的注释是我尝试的另一种方法,该方法不起作用(错误是“需要对象”)。

非常感谢您提供的任何帮助,如果您能解释的话,就更多了-因为我对VBA有点陌生!

提前致谢。

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

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

有Sheet属性UsedRange ,但是以我的经验,它很容易出错。 我一直这样做的方法是遍历行以查找第一个空的行。

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对象或模仿按键)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM