VBA删除名称会抛出所需的对象

时间:2013-09-16 00:55:54

标签: vba names

我只想删除每次创建查询表时创建的一些名称。它们都是3张,从0048,0114,0715开始,所以我只删除所有以任何一个开头的名字。但是,当我使用rName.Delete时,我在if子句中得到了拒绝“object required”。没有这个,代码运行正常并打印所有名称。另外,如果我执行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

知道我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

将Tim的评论作为解决方案发布

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