0

我只想删除每次创建查询表时创建的一些名称。它们都在以 0048,0114,0715 开头的 3 张纸中,因此我将删除所有以其中任何一个开头的名称。但是,当我使用 rName.Delete 时,我在 if 子句中得到拒绝“需要对象”。没有这个,代码运行良好并打印所有名称。此外,如果我执行 range(rName).delete 它会删除工作簿中的范围(虽然不是我想要的)。

Sub delNames()
Dim strStartString(0 To 2) As String

strStartString(0) = "'0048'!mta"
strStartString(1) = "'0114'!mta"
strStartString(2) = "'0715!'mta"

For Each rName In ActiveWorkbook.Names
    For Each ss In strStartString
        If rName.Name Like ss & "*" Then
            Debug.Print rName.Name
            rName.Delete
        End If
    Next ss
Next rName
End Sub

知道我在这里做错了什么吗?

4

1 回答 1

0

发布蒂姆的评论作为解决方案

在循环中修改集合可能会导致问题。尝试使用 for next 循环反向计数名称 - For x = ActiveWorkbook.Names.Count to 1 Step -1 : ActiveWorkbook.Names(x).Delete – Tim Williams 49 分钟前

于 2013-09-16T02:03:45.657 回答