excel vba,删除没有循环的工作簿中的所有名称

时间:2017-02-01 02:08:26

标签: excel vba

我尝试使用VBA从excel工作簿中删除所有名称 没有使用循环。

我目前正在使用下面的代码,但这很慢,因为工作簿中有数千个名称。

任何建议都将不胜感激!

Sub deleteAllNames()
Dim xName As Name

For Each xName In Application.ActiveWorkbook.Names
       xName.Delete
Next
End Sub

2 个答案:

答案 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