VBA如何快速复制单元格的公式和格式?

[最新发现]我发现value(11)有时可以复制公式 ,但并不总是。 像sumproductsumif这样的公式不能被复制,但是可以复制简单的算术运算。 这太奇怪了! 我仍然无法弄清楚为什么。

我知道,如果我只想复制值,最快的方法是

 Range("A1").Value = Range("A2").Value 

如果我想复制格式和值,最快的方法是

 Range("A1").Value(11) = Range("A2").Value(11) 

如果我想复制公式,最快的方法是

 Range("A1").Formula = Range("A2").Formula 

如果我想复制公式和格式呢? (我在这个单元格中有很多格式,比如条件格式,粗体,下划线,alignment方式,数字显示格式,边框样式等等,所以一次一个地转换每个样式是不实际的。

怎么样一个子这样的:

 Sub copyFormattingAndFormulas(source As Range, target As Range) Dim sourceCell, targetCell As Range Dim i, j, lastRow, lastColumn As Integer lastRow = source.rows.count + source.row - 1 lastColumn = source.columns.count + source.Column - 1 For i = source.row To lastRow For j = source.Column To lastColumn Set sourceCell = Cells(source.row + i - 1, source.Column + j - 1) Set targetCell = Cells(target.row + i - 1, target.Column + j - 1) targetCell.value(11) = sourceCell.value(11) targetCell = sourceCell.Formula Next Next End Sub 

它所做的就是在指定范围的循环中同时处理在问题中显示的内容(很好的了解.value(11)!)。

我刚刚find一个简单的答案。

 Range("A1").Value(11) = Range("A2").Value(11) Range("A1").Formula = Range("A2").Formula 

由于value(11)复制一些复杂的公式(我不知道为什么,应该是Excel中的错误value(11)失败,我添加了第二行再次粘贴公式。 这应该确保所有公式都被正确地复制。