在VB中命名范围会爆炸(Excel 2003,VBA 6.5)

时间:2012-10-15 16:46:57

标签: vba excel-vba range rename excel-2003

我试图取消一个范围,如果它存在的单元格。下面的代码找到了具有正确名称的范围,但在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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

我更改为Sub,我认为没有理由将其设为Function,因为您没有设置返回值