如何删除命名范围的内容
我试图删除某些标准下某些命名范围的所有内容。 具体来说,如果范围的名称以“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