Копировать и вставлять специальные без выбора ячейки - PullRequest
0 голосов
/ 25 июня 2019

Код, который я запускаю, но он не выполняет то, что я намерен в последней строке В конце строки вставляется формула, но она не корректирует формулу для новой ячейки. Например, если формула, которую я копирую, - это 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 Ответ

1 голос
/ 25 июня 2019

Из комментариев кажется, что вы хотите скопировать формулу, а затем преобразовать ее в значения.Это необходимо сделать в 2 этапа, необязательно с явным .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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...