如何删除包含“标志”的命名范围

我有一个excel模板,里面填写了我从同事处收到的表格。 我收到的每张表都包含大约12个命名范围,它们都具有相同的名称。 每个名称都以“标志”开头。

我发现另一个问题,在stackoverflow给出了一个解决scheme,删除名称范围与名称不等于给定的名称: 循环通过名称,并删除那些不匹配指定的模式

我使用这个解决scheme来创build我自己的代码。 我想删除的名称(因为他们让我的文件非常慢)都以“标志”开头。 我因此使用了

left(myname.namelocal, 5) 

函数来查找我的工作簿中以“flags”开头并删除它的每个名称。

但是,此代码不起作用。 执行代码时,名称不会被删除。

我不明白为什么它不起作用。 我已经尝试了一个小文件上的类似代码来testing代码。 它工作正常。

唯一的区别是testing文件没有密码保护。 这就是我添加到代码,以确保代码可以删除名称。

 Sub deletenames() 'verwijderd alle naam-bereiken waarvan de naam begint met flags uit het verwerkingsbestand. Dim ws As Worksheet Dim myName As Name For Each ws In ThisWorkbook.Worksheets ws.Unprotect ("TM") Next ws For Each myName In ThisWorkbook.Names If Left(myName.NameLocal, 5) = "flags" Then myName.Delete Next End Sub 

我能做些什么来使这个代码工作?

问题很可能是Excel允许特定工作表和工作簿范围的命名范围。 既然你已经提到所有的表都被复制到一起,我怀疑命名的范围是与表单关联的。

编辑:特定于表单的命名范围具有名称Sheet!Range ,因此您的检查必须考虑表单前缀。 一个解决scheme,在你的评论中用Like来比较名字是好的:

 If myName.NameLocal Like "*!flags*" Then myName.Delete