Excel 创建和复制新工作表
这里的新手, 我有一个包含公式的表格的模板工作表。最后,我想按一个按钮创建粘贴值,并将其从模板工作表复制到新工作表中,因此我得到的结果如下:Excel 创建和复制新工作表,excel,vba,copy,paste,Excel,Vba,Copy,Paste,这里的新手, 我有一个包含公式的表格的模板工作表。最后,我想按一个按钮创建粘贴值,并将其从模板工作表复制到新工作表中,因此我得到的结果如下: 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 Sh
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
问题是我只想从模板工作表中粘贴没有任何公式的值
谢谢您需要的是Range.Paste特殊方法 充分表现为: 粘贴特殊、粘贴、操作、SkipBlanks、转置 看 到目前为止,您正在粘贴整个工作表,这是非常无效的。我建议您熟悉Listobjects,在VBA中定义表,然后使用RangeYourTable.PasteSpecial uPaste:=xlPasteValues将表中的值仅复制到新工作表中 下面是一个快速示例:
Private Sub Sample()
Dim tbl As ListObject
Set tbl =Sheets("YourSheet").Listobjects("YourTable") 'note the "s" in ListObjects
End Sub
要引用表范围,请使用RangeTableName.ListObject。
有关更多信息,请参阅
希望这是有帮助的,有一个美好的一天 您可以选择手动创建空工作表的解决方案,并使用PasteSpecial和选项XLPasteValues仅复制值,但这不会复制格式。然后可以使用另一个PasteSpecial复制格式 另一种方法是先复制整个模板(包括公式),然后添加以下语句。它一开始看起来很奇怪,但它将所有公式转换为值
xNWS.UsedRange.Value2 = xNWS.UsedRange.Value2
是的,它工作了,尽管它也从模板表复制了命令按钮