excel - 在多个工作表上使用动态最后一行

标签 excel vba

我在下面有一些代码,旨在找到每个工作表的最后一行(单个工作簿中的“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 的语句中,因此使用了事件工作表的单元格。您需要符合所有 CellsRange引用资料(告诉 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/

相关文章:

excel - 使用带有 Ranges 数组的 Consolidate 函数

vba - Excel VBA WorkSheet.Excel 2013 之后的复制

excel - 如何使用 Excel 中存储的地址向多个收件人发送电子邮件?

vba - 反向循环过滤列表的快速方法?

python - 将数据导出到 Excel

excel - 使用 VBA 将多列转置为多行

excel - 我们可以用一条语句将字典项(数组)放入 Range 中吗?

vba - ADODB RecordSet 到字符串变量 VBA

excel - 使用 Excel VBA 自动邮件合并

vba - Excel 宏根据关键字搜索文件,如果存在则返回 true