簡體   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