我尝试使用VBA从excel工作簿中删除所有名称 没有使用循环。
我目前正在使用下面的代码,但这很慢,因为工作簿中有数千个名称。
任何建议都将不胜感激!
Sub deleteAllNames()
Dim xName As Name
For Each xName In Application.ActiveWorkbook.Names
xName.Delete
Next
End Sub
答案 0 :(得分:2)
如果没有一些复杂的hacky方式或搞乱XML,这是不可能的,但这应该更快:
Dim i As Long
Application.Calculation = xlCalculationManual
For i = ThisWorkbook.Names.Count To 1 Step -1
ThisWorkbook.Names(i).Delete
Next
Application.Calculation = xlCalculationAutomatic
答案 1 :(得分:1)
我在删除所有命名范围时遇到同样的问题,代码运行速度非常慢。您可以通过在循环运行时关闭屏幕更新和计算来解决此问题。
Sub deleteAllNames()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim xName As Name
For Each xName In Application.ActiveWorkbook.Names
xName.Delete
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub