创建并复制新的 sheet

Create and copy new sheet

这里是新手, 我有一个 模板 sheet 和一个 table 包含 formulas.At 最后我想按一个按钮从 [= 创建和复制粘贴值18=]模板 sheet 到 new sheet 所以这就是我得到的:

Sub CreateSheet()
Dim xName As String
Dim xSht As Object
Dim xNWS As Worksheet
On Error Resume Next
xName = Application.InputBox("Please enter a name for this new sheet ", "New Sheet")
If xName = "" Then Exit Sub
Set xSht = Sheets(xName)
If Not xSht Is Nothing Then
MsgBox "Sheet cannot be created as there is already a worksheet with the same name in this workbook"
Exit Sub
End If
ActiveSheet.Copy after:=Sheets(Sheets.Count)
Set xNWS = Sheets(Sheets.Count)
xNWS.Name = xName
End Sub

问题是我只想粘贴没有来自 模板 sheet

的任何公式的值

谢谢

您正在寻找的是 Range.PasteSpecial 方法。

完整的表达式是:
PasteSpecial( _Paste_ , _Operation_ , _SkipBlanks_ , _Transpose_ )

https://docs.microsoft.com/en-us/office/vba/api/excel.range.pastespecial

截至目前,您正在粘贴整个 sheet,这是非常无效的。我建议您熟悉 Listobject(s),在 VBA 中定义 table,然后使用 Range("YourTable").PasteSpecial _ Paste:=xlPasteValues 仅将 table 中的值复制到新的 sheet.

这是一个快速示例:

Private Sub Sample()
Dim tbl As ListObject
Set tbl =Sheets("YourSheet").Listobjects("YourTable") 'note the "s" in ListObjects
End Sub

要引用您的 table 范围,请使用 Range("TableName").ListObject
有关详细信息,请参阅 https://www.dingbatdata.com/2017/11/24/referencing-listobjects-with-vba

希望这对您有所帮助,祝您有愉快的一天!

您可以寻求一种解决方案,手动创建一个空的 sheet 并使用 PasteSpecial 和选项 xlPasteValues 来仅复制值 - 但这不会复制格式。然后您可以使用另一个 PasteSpecial 来复制格式。

另一种方法是先复制整个模板,包括公式,然后添加以下语句。一开始看起来很奇怪,但它会将所有公式转换为值。

xNWS.UsedRange.Value2 = xNWS.UsedRange.Value2