【发布时间】:2014-05-23 07:51:50
【问题描述】:
我有一个 Excel 模板,里面填满了我从同事那里收到的添加表格。 我收到的每张表都包含大约 12 个命名范围,它们都具有相同的名称。每个名称都以“标志”开头。
我在 stackoverflow 上发现了另一个问题,该问题提供了删除名称不等于给定名称的名称范围的解决方案: loop through names and delete those not matching specified pattern
我使用这个解决方案来创建我自己的代码。 我要删除的名称(因为它们使我的文件非常慢)都以“标志”开头。 因此,我使用了
left(myname.namelocal, 5)
在我的工作簿中查找以“flags”开头的每个名称并将其删除的功能。
但是,此代码不起作用。执行代码时名称不会被删除。
而且我不明白为什么它不起作用。我在一个小文件上尝试了类似的代码来测试代码。它工作得很好。
唯一的区别是测试文件没有密码保护。这就是我添加到代码中以确保代码可以删除名称的内容。
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
我该怎么做才能使这段代码正常工作?
【问题讨论】: