[英]Find the blank row after the last row then paste
我有一個按鈕可以打開另一個 Excel 文件。 從那里復制某些列並將其粘貼到這個 Excel 文件中。
當我對粘貼 function 使用穩定范圍時,我的代碼有效(例如 A1 而不是 Range("A" & lDestLastRow))。
我想粘貼到下一個空行。
Sub get_data_from_file()
Dim FileToOpen as Variant
Dim OpenBook As Workbook
Dim wsdest as Worksheet
Dim lDestLastRow as Long
Application.ScreenUpdating=False
Set wsdest = Workbooks("Test.xslm").Worksheets("Input Sheet")
lDestLastRow=Sheet1.Cells(1,1).CurrentRegion.Row+1
FileToOpen=Application.GetOpenFileName(Title:="Browse for your file and input range",
FileFilter:"Excel Files (*xls*),*xls*")
If FileToOpen<>False Then
SetOpenBook=Application.Workbooks.Open(FileToOpen)
OpenBook.Sheets(1)Range(B:E).Copy
wsdest.Range("A", lDestLastRow).PasteSpecial xlPasteValues
OpenBook.Sheets(1)Range(G:H).Copy
wsdest.Range("E", lDestLastRow).PasteSpecial xlPasteValues
OpenBook.Sheets(1)Range(M:M).Copy
wsdest.Range("G", lDestLastRow).PasteSpecial xlPasteValues
End if
Application.ScreenUpdating=True
End Sub
這lDestLastRow=Sheet1.Cells(1,1).CurrentRegion.Row+1
沒有找到整個工作表的最后一行。 因此,您應該使用wsDest.UsedRange.Find("*", , , , xlByRows, xlPrevious).Row
不要將您的變量命名為lDestLastRow
,然后將last row + 1
這非常令人困惑。 根據其中的內容命名您的變量,例如lDestNextFreeRow
修復代碼中的拼寫錯誤.Sheets(1)Range(B:E)
應該是.Sheets(1).Range("B:E")
等等。
如果您復制完整的列Range("B:E")
,您只能在完整的列中傳遞它們,否則您會超出工作表的最大行數。 因此,將行限制為您的實際數據,而不是復制完整的列。
Range("B1:E1").Resize(RowSize:=lSrcLastRow)
這將使用列B
到E
的第一個單元格,然后將大小調整為找到數據的行數。
像下面這樣的東西應該工作:
Option Explicit
Public Sub get_data_from_file()
Dim wsDest As Worksheet
Set wsDest = Workbooks("Test.xslm").Worksheets("Input Sheet")
Dim lDestNextFreeRow As Long 'find next free row in destination sheet
lDestNextFreeRow = wsDest.UsedRange.Find("*", , , , xlByRows, xlPrevious).Row + 1
Dim FileToOpen As Variant
FileToOpen = Application.GetOpenFilename(Title:="Browse for your file and input range", FileFilter:="Excel Files (*xls*),*xls*")
If FileToOpen <> False Then
Dim OpenBook As Workbook
Set OpenBook = Application.Workbooks.Open(FileToOpen)
Dim lSrcLastRow As Long 'find last used row in the source sheet
lSrcLastRow = OpenBook.Sheets(1).UsedRange.Find("*", , , , xlByRows, xlPrevious).Row
OpenBook.Sheets(1).Range("B1:E1").Resize(RowSize:=lSrcLastRow).Copy
wsDest.Range("A" & lDestNextFreeRow).PasteSpecial xlPasteValues
OpenBook.Sheets(1).Range("G1:H1").Resize(RowSize:=lSrcLastRow).Copy
wsDest.Range("E" & lDestNextFreeRow).PasteSpecial xlPasteValues
OpenBook.Sheets(1).Range("M1").Resize(RowSize:=lSrcLastRow).Copy
wsDest.Range("G" & lDestNextFreeRow).PasteSpecial xlPasteValues
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.