【问题标题】:Copy and paste range to new destination将范围复制并粘贴到新目的地
【发布时间】:2018-01-04 00:11:57
【问题描述】:

我试图在我的电子表格中构建的功能是“复制选定范围并过去到新范围,然后每次我运行宏时,它都会执行相同的 copy.paste.range 到新范围,但粘贴目标将跟随从以前粘贴的值开始。该功能是每周收集统计信息,宏将自动收集日期。

我的初始步骤有效,但它粘贴了公式,而不仅仅是值。我已经添加了粘贴特殊功能,但它现在根本不起作用。粘贴后,我正在寻找下一个复制并粘贴,以从粘贴到 D21:J27 的数据中继续,例如D28:J34(可能是偏移量?)

Sub CopyPaste_Weeklys()
Sheets("MI Build").Range("D7:J13").Copy
Sheets("MI Build").Activate
Range("D21:J27").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNoneActiveSheet.Paste
Application.CutCopyMode = False
End Sub

任何帮助将不胜感激。

谢谢

加里

【问题讨论】:

  • 请出示您拥有的代码,没有更具体的信息很难提供帮助
  • 请在您尝试构建的代码中显示您的尝试。描述您在工作中遇到的任何问题。
  • 代码需要使用edit放在原帖中。请勿在 cmets 中添加阐明问题的信息。
  • 使用复制/粘贴来传输值是 VBA 中的错误工具。相反,只需使用类似target.Value = source.Value 的东西,其中sourcetarget 是已设置为适当范围的两个范围变量。除其他外,这种方法避免了必须使用 SelectionActivate(在 VBA 中很少需要)。

标签: vba excel


【解决方案1】:

如果您只想将D7:J13 中的值复制到D21:J27,则您的整个 sub 可以替换为:

Sub CopyPaste_Weeklys()
    Sheets("MI Build").Range("D21:J27").Value = Sheets("MI Build").Range("D7:J13").Value
End Sub

在 VBA 中,复制/粘贴应保留用于需要复制公式和格式等内容的情况。对于值,最好只使用相应范围的 Value 属性。

大概范围并不总是D7:J13D21:J27,但您的问题没有提供有关如何确定范围的信息。上面的固定范围可以替换为可以在运行时设置的范围变量。以下几行:

Sub CopyPaste_Weeklys()
    Dim i As Long
    Dim target As Range
    With Sheets("MI Build")
        i = .Cells(.Rows.Count, "D").End(xlUp).Row + 1
        Set target = Range(.Cells(i, "D"), .Cells(i + 6, "J"))
        target.Value = .Range("D7:J13").Value
    End With
End Sub

变量 i 由标准 Excel VBA 技巧确定,以确定包含数据的列中最后一行的行号。

【讨论】:

  • 您知道如何在每次运行宏时抵消粘贴约翰吗?谢谢
  • “偏移粘贴”是指将数据粘贴到之前数据的正下方吗? (例如,数据在一次运行中被复制到D21:J27,然后在下一次复制到D28:J34?如果是这样,D7:J13 是否总是源?
  • 效果很好。非常感谢您的支持。
猜你喜欢
  • 2012-09-02
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
相关资源
最近更新 更多