复制并粘贴范围到新目的地

问题描述 投票:0回答:1

我正在尝试构建到我的电子表格中的功能是'复制选定的范围和过去到新的范围然后每次运行宏时它将执行相同的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

任何帮助将非常感激。

谢谢

加里

excel vba excel-vba
1个回答
0
投票

如果你想要做的只是将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技巧确定,以确定包含数据的列中最后一行的行号。

© www.soinside.com 2019 - 2024. All rights reserved.