我正在尝试使用VBA删除Excel工作簿中的所有名称,而不使用循环。
目前我正在使用以下代码,但由于工作簿中有数千个名称,这样做非常缓慢。
如果有建议,请告诉我!
Sub deleteAllNames()
Dim xName As Name
For Each xName In Application.ActiveWorkbook.Names
xName.Delete
Next
End Sub
我正在尝试使用VBA删除Excel工作簿中的所有名称,而不使用循环。
目前我正在使用以下代码,但由于工作簿中有数千个名称,这样做非常缓慢。
如果有建议,请告诉我!
Sub deleteAllNames()
Dim xName As Name
For Each xName In Application.ActiveWorkbook.Names
xName.Delete
Next
End Sub
如果不使用一些复杂的技巧或者修改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
我曾经遇到过删除所有命名区域的问题,代码运行非常缓慢。你可以在循环运行时关闭屏幕更新和计算以解决这个问题。
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