我有一个非常简单的问题,但是我的知识不足使我受阻。 我需要将值和单元格的格式从sheet1复制到sheet2。 单元格的行和列通过循环更改。 这对我有用:
Sheets("SLAVE").Cells(slave_y, slave_x) = Sheets("MASTER").Cells(master_y, master_x)
但它仅复制值,而不复制格式。
我尝试过
Sheets("MASTER").Cells(master_y, master_x).Copy Sheets("SLAVE").Cells(slave_y, slave_x)
但是它会复制我的公式(我不想要)
是否可以在上面的这一行代码中指定仅复制值和格式?
谢谢!
答案 0 :(得分:0)
将值复制到剪贴板,然后粘贴值和格式。
Sheets("MASTER").Cells(master_y, master_x).Copy
Sheets("SLAVE").Cells(slave_y, slave_x).PasteSpecial xlPasteFormats
Sheets("SLAVE").Cells(slave_y, slave_x).PasteSpecial xlPasteValues
答案 1 :(得分:0)
我们不知道您的范围是什么样子,是否可以不循环地复制/粘贴。也许您可以尝试这样的事情:
Sub copy()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
.DisplayStatusBar = False
End With
On Error Resume Next
Dim mRng As Range ' master Range
Dim sRng As Range ' slave Range
Set mRng = ThisWorkbook.Sheets("masterSheetNameHere").Range("A1:A100")
Set sRng = ThisWorkbook.Sheets("slaveSheetNameHere").Range("B1:B100")
sRng.Value(11) = mRng.Value(11) ' 11 argument means values and formats
On Error GoTo 0
With Application
.ScreenUpdating = True
.Calculation = xlAutomatic
.EnableEvents = True
.DisplayStatusBar = True
End With
End Sub
更新 在代码中(基于文件试用版07.xlsm),您可能会遇到一些性能问题。例如。代替:
Sheets("MASTER").Range(Cells(j, MastCol1).Address()).Copy
Sheets(nomeFoglio).Range(Cells(y, DestColE1).Address()).PasteSpecial Paste:=xlPasteColumnWidths
您可以简单地使用:
Sheets(nomeFoglio).Range(Cells(y, DestColE1).Address).ColumnWidth = Sheets("MASTER").Range(Cells(j, MastCol1).Address).ColumnWidth
另一个更重要的问题是:您是否真的需要逐格应用格式?似乎您的整个列都具有相同的格式。因此,您可以使用快速代码仅复制值,然后复制整个列的所有格式(或相反顺序)。还有一件事-您不能在行中复制范围吗(连续3个单元格一次对每个单元格进行复制操作)?最后一件事-如果一切都不起作用,则应阅读有关将数据存储到数组中并立即将其保存到表中的内容。