【问题标题】:How do I select specific cells from ALL worksheets without knowing the exact number of worksheets?如何在不知道确切工作表数量的情况下从所有工作表中选择特定单元格?
【发布时间】:2016-02-02 12:26:31
【问题描述】:

我完全是初学者。这是我的代码的一部分:

Workbooks("xxx").Worksheets(1).Activate
Range("A1").Select
Selection.Copy

Workbooks("yyy").Worksheets(1).Activate
Range("B2").Select
ActiveSheet.Paste

Workbooks("xxx").Worksheets(2).Activate
Range("A2").Select
Selection.Copy

Workbooks("yyy").Worksheets(1).Activate
Range("B3").Select
ActiveSheet.Paste

每个 xxx 工作簿包含未知数量的工作表。可以是 3,也可以是 50。如果我手动复制并粘贴上面的代码,例如。 50 次,如果工作表的数量等于 30,宏将显示错误并停止。我怎样才能自动化呢?请记住,我是这方面的新手,所以请保持您的答案简单。

【问题讨论】:

    标签: excel vba numbers worksheet


    【解决方案1】:

    试试下面的代码。

    Dim wbX As Workbook
    Dim wbY As Workbook
    Set wbX = Application.Workbooks("xxx")
    Set wbY = Application.Workbooks("yyy")
    
    For i = 1 To wbX.Sheets.Count
      wbX.Sheets(i).Activate
      Range("A" & i).Select
      Selection.Copy
    
      wbY.Sheets(1).Activate
      Range("B" & i + 1).Select
      ActiveSheet.Paste
    Next
    

    【讨论】:

    • 谢谢,但这不是我想要的。工作簿 yyy 始终由一个工作表组成。工作簿 xxx 具有随机数量的工作表。我可能没有说清楚。
    • 几乎可以工作。我知道问题出在哪里,但我不知道如何解决。无论工作表编号如何,我都希望宏始终复制相同的单元格,例如。从工作表 1 复制 A1,从工作表 2 复制 A1,从工作表 3 复制 A1 ......您的代码使复制的单元格依赖于工作表编号。
    • 您希望始终从每张工作表中复制 A1 并将其粘贴到 yyy Workbook Sheet1 的 B1、B2、B3....我说的对吗?
    • 没错。天哪,我是个白痴——明白了。 Range("A" & i).Select 需要改为 Range("A1")。我今天学到了很多。谢谢你,你让我开心:)
    • 不客气。你能把它标记为已回答吗
    【解决方案2】:

    由湿婆回答。谢谢!

    Dim wbX As Workbook
    Dim wbY As Workbook
    Set wbX = Application.Workbooks("xxx")
    Set wbY = Application.Workbooks("yyy")
    
    For i = 1 To wbX.Sheets.Count
    wbX.Sheets(i).Activate
    Range("A1").Select
    Selection.Copy
    
    wbY.Sheets(1).Activate
    Range("B" & i + 1).Select
    ActiveSheet.Paste
    Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多