VBA代码复制一个select就像剪切一样,这样粘贴不会修改引用?

当我复制和粘贴,然后Excel移动单元格引用。 例如,对第3行的单元格B2的引用成为对第4行的第B3行的引用。

通过剪切和粘贴,这不会发生,并且对单元格B2的引用仍然是对B2的引用。

我想要剪切和粘贴的行为,但不会丢失原始内容。

我已经尝试录制一个macros,然后按F2,SHIFT-HOME,复制和转义,并且excellogging绝对没有。 但是这就是我想要的macros,所以当我复制它时,它完全复制它。

把下面的标准模块:

Dim sForm As String Sub ccopy() sForm = ActiveCell.Formula End Sub Sub ppaste() ActiveCell.Formula = sForm End Sub 

然后将快捷键Ctrl + e分配给ccopy ,并将快捷键Ctrl + f分配给ppaste

这应该模拟复制/粘贴,但保持单元格引用不变。

这可以修改为多个单元格。

编辑#1:

这个新的标准将处理以下情况:

单细胞 – >多细胞

 Sub ppaste() Dim r As Range For Each r In Selection r.Formula = sForm Next r End Sub 

经过大量的工作,我想到了:

 Dim formulas() As String Dim initCopyCol As Integer Dim initCopyRow As Integer Dim columns As Integer Dim rows As Integer Sub copyFormulaRange() initCopyCol = Selection.Column initCopyRow = Selection.row columns = Selection.columns.Count rows = Selection.rows.Count ReDim formulas(1 To columns, 1 To rows) For i = 1 To columns For j = 1 To rows formulas(i, j) = Cells(initCopyRow + j - 1, initCopyCol + i - 1).Formula Next j Next i End Sub Sub pasteFormulaRange() Dim initPasteCol As Integer Dim initPasteRow As Integer initPasteCol = Selection.Column initPasteRow = Selection.row For i = 1 To columns For j = 1 To rows Cells(initPasteRow + j - 1, initPasteCol + i - 1).Formula = formulas(i, j) Next j Next i End Sub