0

如果单元格存在,我正在尝试取消命名范围。下面的代码找到具有正确名称的范围,但在 nm.Delete 行处爆炸,没有任何解释。我该如何修复/调试它?

谢谢!

Function unefineRange(strRgeName As String)
    Dim nm As Name
    For Each nm In ThisWorkbook.Names
        If nm.Name = strRgeName Then
            nm.Delete
        End If
    Next nm
End Function
4

2 回答 2

0

我刚刚在 Excel 2003 中运行它并且运行良好:

我创建了两个命名范围,Fred 和 Wilma,并在 Visual Basic 编辑器中运行它(模块 1)。毫无问题地删除了“Wilma”。

Function undefineRange(strRgeName As String)
    Dim nm As Name
    For Each nm In ThisWorkbook.Names
        If nm.Name = strRgeName Then
            nm.Delete
        End If
    Next nm
End Function

Sub unDefineRangePlease()
   undefineRange ("Wilma")
End Sub
于 2012-10-15T17:04:41.130 回答
0

试试这个

Sub DeleteName(strRgeName As String)
    On Error Resume Next  ' so if name does not exist no error is raised
    ThisWorkbook.Names(strRgeName).Delete
End Sub

我改为 a Sub,我认为没有理由成为 a Function,因为您没有设置返回值

于 2012-10-15T18:47:27.667 回答