【问题标题】:Copy and paste VBA excel复制并粘贴 VBA excel
【发布时间】:2016-06-09 01:09:56
【问题描述】:
Sub Test()

Dim x As Integer

For x = 1 To 1000

Sheets("Test1").Range(Cells(x, 1), Cells(x, 10)).Select
Sheets("Test2").Cells(5, 16).PasteSpecial Paste:=xlValues, Transpose:=True

Next

End Sub

这是我的宏, 此宏的用途,将工作表测试 1 中的范围“Ax:Jx”复制到工作表测试 2 中的范围“P5:P14”

注意:我想运行 1000 个场景以查看对某些结果的影响。所以第一步,我为你在上面看到的场景创建循环宏。

我被困在 "Sheets("Test1").Range(Cells(i, 1) & Cells(i, 10)).Select" 。如何定义这个范围,以便它可以像 x 循环一样循环。

【问题讨论】:

  • 我相信这里缺少很多东西。您正在将变量范围复制到固定范围中。选择一个范围并复制到另一个范围不需要循环。所以我在这里看到了一些矛盾。这可能是您遇到问题的原因。你能更清楚地定义你要解决的问题吗?
  • 我想运行 1000 个场景,看看对某些结果的影响。所以第一步,我为场景创建循环宏,如上所示。所以我需要在那里循环。这就是我被困在这里的原因。
  • 我不明白你的问题。你想要 x 循环,你有 x 上面。粘贴有问题吗?还是你改变了你的问题?
  • 所以我还是看到了几个问题。一,假设您循环 1000 次并在每个循环上选择不同的数据。然后将其粘贴到相同的目的地。您每次都会覆盖,只有最后一次粘贴可见。第二,您正在选择,但从不复制,所以当您粘贴时,它将是您剪贴板中的任何内容。三,您的目的地与您的来源的大小不同。要获取您的复制宏代码,只需录制一个新宏,选择、复制、然后粘贴,您就可以获取该代码。让我们先带你到那里。
  • @MutjayLee 我在选择范围“Ax:Jx”时遇到问题,因为我想为 x =1 选择范围“A1:J1”,为 x = 2 选择范围“A2:J2”等此代码不起作用:“Sheets("Test1").Range(Cells(x, 1), Cells(x, 10)).Select"

标签: vba excel macros


【解决方案1】:

无需选择或复制/粘贴:

Sub Test()

    Dim x As Integer, sht1, sht2

    Set sht1 = Sheets("Test1")
    Set sht2 = Sheets("Test2")

    For x = 1 To 1000

        sht2.Cells(5, 16).Resize(10, 1).Value = _
              Application.Transpose(sht1.Cells(x, 1).Resize(1, 10).Value)

    Next

End Sub

【讨论】:

  • 谢谢,我会试试这个代码。顺便说一句,你能告诉我,为什么我的代码不起作用Sheets("Test1").Range(Cells(x, 1), Cells(x, 10)).Select
  • 1.你只是Select'ing,实际上并没有复制任何东西。 2. Cells(x, 1) 等默认情况下会引用活动表,所以如果这不是“Test1”,那么你会得到臭名昭著的 1004 错误。
  • 哦,你是对的,谢谢你的帮助。如果我在那里使用copy 代码,那应该没问题吧?
  • 您可以使用Copy,但除非您还想复制格式,否则没有理由这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多