我在下面有一些代码,旨在找到每个工作表的最后一行(单个工作簿中的“r.xls”)并将信息复制并粘贴到工作簿中的工作表(r)(“priority.xls”) . “r.xls”工作簿中有 15 张工作表。
我遇到的问题是宏没有识别每个工作表的最后一行,而是识别工作表 14 的最后一行并将其用作每张工作表最后一行的基础。因此,一些工作表条目被提前剪掉。
我的代码在下面
Option Explicit
Sub Rloop()
Dim WScount As Integer, WSraw As Object, i As Integer
Dim LastRow As Long, LastRowRD As Long, LastRowU As Long
'Open raw data file from "priority.xlsx" spreadsheet
Set WSraw = Workbooks.Open(Sheets("Dashboard").Range("E4"))
Application.CutCopyMode = False
Application.DisplayAlerts = False
'Set number of tabs in workbook
WScount = WSraw.Worksheets.Count
'Clear data
ThisWorkbook.Sheets("Returns").Range("C23:X1000000").ClearContents ' clear 1st section
ThisWorkbook.Sheets("Returns").Range("Y24:AD100000").ClearContents ' second section
For i = 1 To 15 'To 15 sheets
'Define last row/column in respective tab
LastRow = Cells(Sheets(i).Rows.Count, "A").End(xlUp).Row 'ISSUE
LastRowRD = ThisWorkbook.Sheets("R").Cells(ActiveSheet.Rows.Count, "D").End(xlUp).Row
Sheets(i).Range("A9:T" & LastRow).Copy
ThisWorkbook.Sheets("R").Range("E23:X" & LastRowU).PasteSpecial xlPasteValues
Next i
End Sub
任何帮助将不胜感激。谢谢你。
最佳答案
您不符合条件 Cells
在您设置 LastRow
的语句中,因此使用了事件工作表的单元格。您需要符合所有 Cells
和 Range
引用资料(告诉 VBA 您要使用哪个工作表)。
完整的声明将是
LastRow = Sheets(i).Cells(Sheets(i).Rows.Count, "A").End(xlUp).Row
因为这有点难读,通常是 With
使用 -statement 或变量,但这完全取决于您。顺便说一句:您还应该告诉您要使用的工作簿,否则将使用事件工作簿。
With WSraw.Sheets(i)
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
或者Dim ws as Worksheet
Set ws = WSraw.Sheets(i)
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
关于excel - 在多个工作表上使用动态最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70831735/