如何将工作表复制到新工作表中但仅作为值?

时间:2019-11-28 16:04:12

标签: excel vba

我想将工作表“成本表”复制到新工作表。我目前使用此代码执行该功能:

Sub CopyPasteSheetAsValues()
    Worksheets("Costing Sheet").Copy After:=Worksheets("Costing Sheet")
    Application.CutCopyMode = False
End Sub

复印表中有一些新工作表中不需要的公式。因此,我想将工作表复制到新表中,然后粘贴为“仅值”。

我下面还有一些代码可以复制和粘贴工作表,但它会覆盖当前工作表。而不是仅包含值的新工作表,它是与值相同的工作表。

Sub CopyPasteSheet()
    'Copy and Paste Summary Sheet as Values
    Sheets("Costing Sheet").Cells.Copy Before:=Sheets("Comparison Job")
    Sheets("Costing Sheet").Cells.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub

我尝试合并代码,但未成功。谁能建议该怎么做?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以利用以下事实:工作表从另一工作表复制时成为活动工作表。

Sub CopyPasteSheetAsValues()

Worksheets("Costing Sheet").Copy After:=Worksheets("Costing Sheet")
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value

End Sub

答案 1 :(得分:0)

无目的地复制将使用复制的工作表创建一个新的工作簿。将范围的值分配给范围的值将摆脱公式。

Dim myNewWB as Workbook

Worksheets("Costing Sheet").Copy
Set myNewWB = ActiveWorkbook
With myNewWB.Worksheets(1)
   .Range(.Cells(1,1),.Cells(.UsedRange.Rows.Count,.UsedRange.Columns.Count)).Value= _
   .Range(.Cells(1,1),.Cells(.UsedRange.Rows.Count,.UsedRange.Columns.Count)).Value
End With