我只想删除每次创建查询表时创建的一些名称。它们都是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
知道我在这里做错了吗?
答案 0 :(得分:0)
将Tim的评论作为解决方案发布
在循环中修改集合可能会导致问题。尝试使用for for next循环计算反向名称 - 对于x = ActiveWorkbook.Names.Count为1步-1:ActiveWorkbook.Names(x).Delete - Tim Williams 49分钟前