excel - VBA FOR循环中可能的循环
问题描述
我有一个带有一些数据透视表的 Excel 文件,其中有一个宏可以打开 Excel 源文件,更新不同的数据透视表,最后它应该关闭源文件。如果我评论 FOR 循环,它会正确打开和关闭 SOURCE 文件,所以我怀疑循环中存在问题。
谢谢你的任何建议
Option Explicit
Private Sub Workbook_Open()
Call aggiorna
End Sub
Sub aggiorna()
On Error GoTo ErrHandler
Application.ScreenUpdating = False
Dim wrb As Workbook
Dim pt As PivotTable
' Apre in sola lettura
Set wrb = Workbooks.Open("C:\Users\Saila\Desktop\Ore Operatori_2018.xlsx", True, True)
For Each pt In ActiveSheet.PivotTables
pt.RefreshTable
Next pt
' Chiude Sorgente
wrb.Close
Set wrb = Nothing
ErrHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
解决方案
很可能代码在数据透视表循环期间引发了一些错误,然后它跳转到ErrHandler:
标签,从而跳过wrb.Close
和Set wrb = Nothing
将这些后面的语句移到ErrHandler:
标签之后
Sub aggiorna()
On Error GoTo ErrHandler
Application.ScreenUpdating = False
Dim wrb As Workbook
Dim pt As PivotTable
' Apre in sola lettura
Set wrb = Workbooks.Open("C:\Users\Saila\Desktop\Ore Operatori_2018.xlsx", True, True)
For Each pt In ActiveSheet.PivotTables
pt.RefreshTable
Next pt
ErrHandler:
' Chiude Sorgente
wrb.Close
Set wrb = Nothing
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
顺便说一句,您可能想要评论On Error GoTo ErrHandler
并查看代码失败的位置和原因,然后增强您的代码以适当地管理错误
推荐阅读
- sqlalchemy - sqlalchemy - 3 级会员计划
- android - getWindow().setFlags(int flags, int mask) 中的标志和掩码参数是什么?
- mysql - 将异构数据存储在具有静态模式的表中的最佳方法是什么
- telegram - 在 Telegram 组中撤消“新成员的隐藏历史记录”
- php - Webpack,公共文件夹到不同的目录
- unity3d - NodeMCU Unity 连接,使用 UDP
- memory-leaks - valgrind 说我在非常简单的 malloced 代码中肯定丢失了块,我不知道为什么
- matlab - MATLAB 数字精度
- python-3.x - Python Pillow - 获取黑色/灰色/白色像素的亮度
- android - Android 如何使用 Mediastore.FILES 移动文件