复制工作表而不创build命名范围的新实例?

我正在使用下面的代码来复制工作表。 我也有几个范围的工作簿范围。 问题是,当我做副本时,它会创build所有命名范围的重复与新工作表的作用域。 一切正常,但我可能有20多张。 我不需要80个大部分重复的命名范围。 我怎样才能避免这一点?

Sub btnCopyTemplate() Dim template As Worksheet Dim newSheet As Worksheet Set template = ActiveWorkbook.Sheets("Template") template.Copy After:=Sheets(Sheets.Count) Set newSheet = ActiveSheet newSheet.Name = "NewCopy" End Sub 

和副本之后的名称pipe理器:

在这里输入图像描述

这是我的答案:

 Sub btnCopyTemplate() Dim template As Worksheet Dim newSheet As Worksheet Set template = ActiveWorkbook.Sheets("Template") template.Copy After:=Sheets(Sheets.Count) Set newSheet = ActiveSheet newSheet.Name = "NewCopy" deleteNames 'Check the sub End Sub Sub deleteNames() Dim theName As Name For Each theName In Names If TypeOf theName.Parent Is Worksheet Then theName.Delete End If Next End Sub 

这样,您将删除范围为“工作表”的所有名称并保留“工作簿”名称

编辑#2

在阅读这里的评论之后,更新通过表单来循环只有“newSheet”

 Sub btnCopyTemplate() Dim template As Worksheet Dim newSheet As Worksheet Set template = ActiveWorkbook.Sheets("Template") template.Copy After:=Sheets(Sheets.Count) Set newSheet = ActiveSheet newSheet.Name = "NewCopy" deleteNames newSheet End Sub Sub deleteNames(sht As Worksheet) Dim theName As Name For Each theName In Names If (TypeOf theName.Parent Is Worksheet) And (sht.Name = theName.Parent.Name) Then theName.Delete End If Next End Sub