Excel VBA从sheet1单元格复制到sheet2单元格,格式为

时间:2019-08-25 09:18:46

标签: excel vba

我有一个非常简单的问题,但是我的知识不足使我受阻。 我需要将值和单元格的格式从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)

但是它会复制我的公式(我不想要)

是否可以在上面的这一行代码中指定仅复制值和格式?

谢谢!

2 个答案:

答案 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个单元格一次对每个单元格进行复制操作)?最后一件事-如果一切都不起作用,则应阅读有关将数据存储到数组中并立即将其保存到表中的内容。