當我複製並粘貼時,然後excel將單元格引用向下移動。例如。第3行上對單元格B2的引用成爲對第4行上的第B3行的引用。VBA代碼複製一個選擇就像剪切一樣,以便粘貼不會修改引用?
通過剪切和粘貼,這不會發生,並且對單元格B2的引用仍保留對B2的引用。
我希望剪切和粘貼的行爲,但不會丟失原始內容。
我試過錄制一個宏,然後按F2,SHIFT-HOME,複製和轉義,而excel記錄絕對沒有。但這是我想要宏做的事情,所以當我複製它時,它會完美地複製它。
當我複製並粘貼時,然後excel將單元格引用向下移動。例如。第3行上對單元格B2的引用成爲對第4行上的第B3行的引用。VBA代碼複製一個選擇就像剪切一樣,以便粘貼不會修改引用?
通過剪切和粘貼,這不會發生,並且對單元格B2的引用仍保留對B2的引用。
我希望剪切和粘貼的行爲,但不會丟失原始內容。
我試過錄制一個宏,然後按F2,SHIFT-HOME,複製和轉義,而excel記錄絕對沒有。但這是我想要宏做的事情,所以當我複製它時,它會完美地複製它。
將下面的標準模塊中:
Dim sForm As String
Sub ccopy()
sForm = ActiveCell.Formula
End Sub
Sub ppaste()
ActiveCell.Formula = sForm
End Sub
然後分配快捷鍵Ctrl鍵 + ë到ccopy和快捷鍵Ctrl鍵 + ˚F到ppaste
這應該模擬複製/粘貼,但留下單元格引用完好無損。
這可以修改爲多個單元格。
編輯#1:
這個新ppaste將處理的情況下:
單細胞 - >多個單元
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
這太好了,謝謝!你將如何修改它的多個單元格?有沒有ActiveRange或類似的東西? – Eliyahu
請參閱我的**編輯#1. **執行*多個單元格 - >多個單元格*將是一個重大變化。 –