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