复制和粘贴特殊内容而不选择单元格

时间:2019-06-25 14:42:30

标签: excel vba

我运行的代码运行了,但是没有达到我在最后一行中的预期。最后一行将粘贴公式,但不会为新单元格调整公式。 例如,如果复制的公式为A3且公式为A3 = A1 + A2,则将其粘贴到A10中时,公式仍为A1 + A2而不是A9 + A8。

我尝试使用特殊粘贴,但无法正常工作。我不想选择一个新的活动单元,因为我将不得不返回到原始活动单元并再次引用它。

Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+Z
'
    Dim StartCell As Range
    Dim copyRance As Range
    Dim dataSheet As Worksheet
    Dim destSheet As Worksheet
    Set dataSheet = Sheets("Macro (insert data)")
    Set destSheet = Sheets("Jun-2019")

    Set StartCell = ActiveCell

    Set copyRange = dataSheet.Range("G4:Q4")
    ActiveCell.Resize(copyRange.Rows.Count, copyRange.Columns.Count).Value = copyRange.Value

    Set copyRange = dataSheet.Range("W4:AG5")
    destSheet.Range("C42").Resize(copyRange.Rows.Count,     copyRange.Columns.Count).Value = copyRange.Value

    Set copyRange = destSheet.Range("N10:X10")
    StartCell.Offset(0, 11).Resize(copyRange.Rows.Count, copyRange.Columns.Count).Value = copyRange.Formula
End Sub

1 个答案:

答案 0 :(得分:1)

从注释看来,您似乎要复制公式,然后将其转换为值。这需要分两个阶段完成,如果“计算”设置为“手动”,可以选择使用显式.Calculate

Set copyRange = dataSheet.Range("G4:Q4")

'Copy formulas to ActiveCell
copyRange.Copy Destination:=ActiveCell

With ActiveCell.Resize(copyRange.Rows.Count, copyRange.Columns.Count)
    'Force the calculation
    .Calculate
    'Keep just the values
    .Value = .Value
End With