如何删除命名范围的内容

我试图删除某些标准下某些命名范围的所有内容。 具体来说,如果范围的名称以“CA”结尾,那么组成该范围的单元格中的所有内容都应该被清除。 这是我迄今为止:

For Each Nm in ActiveWorkbook.Names If Right(Nm.Name, 2) = "CA" Then Range(Nm.Name).ClearContents End If Next Nm 

这会产生一个错误:

 Method 'Range' of object '_Global' failed 

我也试图脱掉.Name ,只是使用:

 Range(Nm).ClearContents 

但是这给出了相同的错误。 提供某种工作簿和工作表参考给出了错误:

 Application-defined or object-defined error 

.ClearContents改为.Clear什么也不做。

我知道这是find范围,因为它通过了if-statement

我错过了一些愚蠢的东西吗?

编辑:对于什么是值得的问题,命名的范围是在从兼容模式下打开的代码写入的另一个工作簿中。

所以,我不能确定为什么会发生这种情况,因为我从中得到的命名范围的工作簿并不是我创build的,但是看起来好像所讨论的命名范围的“RefersTo”具有需要的额外引号删除,以便提到一个合法的范围。 见下文

在这里输入图像说明

所以我添加了用引号代替的代码,这似乎解决了这个问题。

 For Each Nm In Names If Right(Nm.Name, 2) = "CA" Then newName = Replace(CStr(Nm), Chr(34), "") Range(newName).ClearContents End If Next Nm 

我知道你们很多人一直在看这个,我很感激。 谢谢。

这适用于我:

 Dim nm As Name For Each nm In Names If LCase(Right(nm.Name, 2)) = "ca" Then Range(nm).ClearContents End If Next nm