【发布时间】:2015-02-10 05:01:21
【问题描述】:
我正在尝试创建一个宏,它将数据从一个工作表复制并放入另一个工作表。我可以毫无问题地做到这一点。但是,当我想在另一行中使用相同的宏时,我遇到了问题。基本上我想要做的是从 sheet1 复制单元格 D11 并将其放在 sheet2 上的单元格 B4 中,等等(我正在做的显然比这更复杂,但这并不重要)。
我的问题是,当我现在想运行此宏并从 sheet1 复制单元格 D12 并粘贴到 sheet2 上的 B5 时,粘贴的值会跳转到 B4。我知道发生这种情况是因为 VBcode 说要粘贴复制的值。
我的问题是如何将它粘贴到我选择的任何行中?也许基于我选择的行/单元格。
当前代码,通过录制宏编写
Sheets("sheet1").Select
Range("D11").Select
Selection.Copy
Sheets("sheet2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B4").Select
我假设最后一行是我需要进行更改的地方,但我不确定要更改什么。 谢谢!非常感谢任何和所有帮助。
【问题讨论】:
-
是的,如果您只想使用选定的单元格并使其相对于行(假设您想从 12-5=7 开始将粘贴偏移 7 行),那么您目前已经硬编码了所有内容你可以有
Selection.Copy然后Sheets("sheet2").Range("B" & Selection.Row-7).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False -
你是对的,以及其他评论。但是,我不会像这样接近它。一旦您进入 VBA 并使用代码,而不仅仅是录制宏,您将希望避免使用 Select Statements 来移动和复制数据。看看这个问答:stackoverflow.com/questions/10714251/…
-
如果您可以发布更多关于您要完成的任务的上下文,那么可能有一种更简单、更优雅的编码方式。或者也许只是更适应未来的需求。否则,评论中提供的解决方案是正确的。