【问题标题】:VBA code issue for copying and pasting same columns from multiple sheets in excel workbook用于从 Excel 工作簿中的多个工作表复制和粘贴相同列的 VBA 代码问题
【发布时间】:2018-01-13 20:08:00
【问题描述】:

代码有问题。

excel 工作簿有 4 张。工作簿定期更新。

-Sheet1 是我希望将数据粘贴到的位置。

-Sheets2-4 有我想要获取的数据。

-“A2:B2”范围是数据在 Sheets2-4 中的位置。数据需要粘贴在 Sheet1 中的相同范围内。未粘贴任何数据。

以下代码导致 A2:B2 仅在 Sheet2-4 中选择,并且在 Sheet1 中选择并复制了相同的范围。

任何帮助将不胜感激。

Sub test()

    Worksheets.Select
    Range("A2:B2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Sheet1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

【问题讨论】:

  • 您是要覆盖工作表 1 中的目标范围还是要粘贴到下一个可用行?您至少需要一个循环来循环浏览第 2-4 页。
  • 不会发生覆盖。包含数据的文件每周更新一次。每周我都会有一个新的文件来工作这样的目标。我希望得到一个可以工作的命令,创建 .bas 以在使用时导入以获取更新的数据。
  • 但您说您将工作表 2-4 中的相同范围复制到工作表 1 中的相同范围内。如果它们都是相同的范围,则必须进行覆盖。或者是否存在所有这些数据都适合的定义范围?如果是在哪里?将范围从 2-4 收集在一起并粘贴到范围 A2 表 1?
  • Sheet1 不会保存到文档中,并且不在更新的工作簿上。我只使用 Sheet1 收集数据以发送到另一个程序。假设今天更新了工作簿。我的目标是打开工作簿,创建 Sheet1,然后导入 .bas 文件以提取数据。下周来了,更新发生了,我今天所做的不会出现在下周更新的工作簿上。

标签: vba excel


【解决方案1】:

您的代码正在从 sheet1 复制/粘贴到 sheet1。

  1. 代码的第一行选择所有工作表。
  2. 然后它选择第一张纸的当前范围,并将相同的选择应用于所有纸片。
  3. 当您在多张纸上复制所选内容时,只会复制第一张纸。
  4. 然后将 sheet1 粘贴到 sheet1。

    • 您不能在一个命令中从多张纸复制。
    • 如果可以,那么将 3 张纸中的值粘贴到 1 张纸中的相同目标范围也是不可能的。

您的问题表明您只需要范围 A2:B2,但您的代码选择了代码下方使用的范围,如果您只需要范围 A2:B2,则这是不必要的。

这里是一些从单张纸复制/粘贴的代码:

Sub CopyPaste()
Worksheets("Sheet2").Range("A2:B2").Copy Destination:=Worksheets("Sheet1").Range("A2:B2")
End Sub

如果您希望复制活动表,请从上述代码中删除工作表引用:

Sub CopyPaste()
Range("A2:B2").Copy Destination:=Worksheets("Sheet1").Range("A2:B2")
End Sub

【讨论】:

    猜你喜欢
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多