【问题标题】:Copy rows from multiple sheets to another sequentially按顺序将行从多个工作表复制到另一个工作表
【发布时间】:2021-10-21 07:43:14
【问题描述】:

我正在尝试编写一个脚本来获取所有行(在标题行之后),并将它们按顺序复制到第一个选项卡中。我也有 10 个标签,我希望它这样做,然后将它们依次粘贴到第一个标签中(基本上从其他工作表中提取所有内容,然后像大主表或报告一样将其放入第一个工作表中)

我试过了,但它不起作用

Sub Report()

page = 2
row = 1
Dim lastRow As Integer
Dim pae As Integer
Dim rw As Integer
Dim WSheet(1 To 12) As Worksheet

lastRow = Worksheets(page).Cells(Rows.Count, "A").End(xlUp).rw

    While (pge <= 12)
            While (rw <= lastRow)
        rw = rw + 1
        ws1.Rows(row).EntireRow.Copy WSheet(pge).Range("A" & lastRow)
            Wend
        pge = pge + 1
    Wend
    
End Sub

我试图让它计算有多少行有数据,然后将所有这些行复制到第一个工作表,然后再转到下一个工作表,

它似乎跳过了我声明变量的位置,然后在 lastrow 分配上出错

任何帮助将不胜感激

【问题讨论】:

  • 看起来像是错字? .End(xlUp).RowRow,不是rw) - 你需要Row 属性,而不是rw 变量。
  • 您还使用 rw 作为计数器,但使用 row 来选择行。您还需要在每个页面循环中重置 lastrow。你也在使用 page 和 pge。
  • 不相关:您应该始终对行使用 Long 变量类型,因为 Integers 只能容纳 32,767 行 - 而且您甚至没有使用 pae 变量。 (总之,似乎有很多错别字)
  • 请在模块顶部插入Option Explicit 以强制执行变量声明,这也有助于您在大多数情况下发现拼写错误。
  • ws1 未声明,未设置。为什么要一次复制每一行而不是UsedRange(第一行除外)? WSheet 已声明但未加载。对于所有声明,关于 Long 而不是 Integer 的相同观察。在 VBA 中,将其声明为 Integer 没有任何好处。只有超出其最大限制的风险...lastRow 在循环外计算仅返回第二张表中的情况。所有其他人的行数都相同吗?

标签: excel vba copy report


【解决方案1】:

请尝试下一个代码:

Sub ReportMaster()
 Dim ws1 As Worksheet, ws As Worksheet, lastRow As Long, lastER As Long, lastCol As Long

 Set ws1 = Worksheets(1)

 For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> ws1.Name Then
        lastRow = ws.Range("A" & ws.rows.count).End(xlUp).row
        lastCol = ws.cells(1, ws.Columns.count).End(xlToLeft).Column
        lastER = ws1.Range("A" & ws.rows.count).End(xlUp).row + 1 'last empty row
        ws.Range(ws.Range("B1"), ws.cells(lastRow, lastCol)).Copy ws1.Range("A" & lastER)
    End If
 Next ws
End Sub

【讨论】:

  • @user1787114 没抽时间测试一下上面的代码吗?如果经过测试,它没有满足您的需求吗?
  • 成功了!我将 a1 更改为 b2,因此它跳过了标题,然后将原始 if 语句连接到另一个内部以检查工作表是否为空白(它被拉到空白工作表上的标题),这一切似乎都是金色的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
相关资源
最近更新 更多