1
更大宏的一部分涉及檢測和刪除在將工作表移動/複製到主工作簿時無意中複製的命名範圍。這些「損壞的」命名範圍由名稱管理器中的「值」列表示,顯示「#REF!」。使用VBA在Excel中刪除損壞的命名範圍
我已經嘗試使用下面的宏這些命名範圍的缺失:
Sub DeleteBrokenNamedRanges()
Dim NR As Name
Dim numberDeleted As Variant
numberDeleted = 0
For Each NR In ActiveWorkbook.Names
If InStr(NR.Value, "#REF!") > 0 Then
NR.Delete
numberDeleted = numberDeleted + 1
End If
Next
MsgBox ("A total of " & numberDeleted & " broken Named Ranges deleted!")
End Sub
不幸的是,返回值是0,沒有命名區域已被刪除。我玩過保護/不保護和InStr
的一些參數,但沒有任何工作。
附註 - NR.Value
的退貨不是#REF!或類似的錯誤代碼,但實際上是=C:\Blahblah\blarg.xls
路徑。
任何幫助,將不勝感激,謝謝!
它對我來說工作得很好,說從測試文件中刪除了7個破損範圍。也許檢查'#REF'的單元格值可能會起作用。 – ballsy26
Whhaaatt。我正在運行Excel 2013,這可能是一個問題嗎?我看到InStr已經有過去的變化,但不知道這是否與此有關。裁判!是由於包含名爲範圍錯誤的主題的文件的路徑,因爲該文件不存在。 –
我正在運行Excel 2010,作爲一個測試嘗試創建一個新的範圍,然後刪除整個行,所以創建一個'#REF'錯誤,然後運行您的代碼。如果它有效,那麼你會知道它與文件路徑錯誤有關。 – ballsy26