【发布时间】:2017-12-07 18:08:22
【问题描述】:
我正在编写一个 vba 程序,以根据用户说要通过带有复选框的表单刷新哪些报告来刷新许多报告的电源查询。
这部分代码刷新电源查询,如果刷新不成功,我希望它捕获错误。如果它没有更新,它将更新控制表“未更新”,然后我希望它接下来恢复。
由于某种原因,“On Error Goto Error”没有触发错误行。它仍然抛出错误并停止代码运行。
任何帮助将不胜感激!
For Each cell In
wsConfig.ListObjects("tblReportstoRun").ListColumns(2).DataBodyRange
If cell.Value = True Then
cell.Offset(, 1).Value = Now()
cell.Offset(, 2).Value = frmSetting.tbStartDate
cell.Offset(, 3).Value = frmSetting.tbEnddate
strCurrWS = cell.Offset(0, -1)
ThisWorkbook.Sheets(strCurrWS).Activate
Application.StatusBar = "Updating tab " & strCurrWS
For Each qt In ThisWorkbook.Sheets(strCurrWS).QueryTables
qt.Refresh BackgroundQuery:=False
Next qt
For Each lo In ThisWorkbook.Sheets(strCurrWS).ListObjects
On Error GoTo Error
lo.QueryTable.Refresh BackgroundQuery:=False
Next lo
Else
Error:
cell.Offset(, 4).Value = "Not Updated"
If InStr(Err.Description, "Permission Error") Then
cell.Offset(, 6).Value = "Permission Error. Check Credentials"
Err.Clear
End If
End If
Next cell
Set qt = Nothing
Set wks = Nothing
【问题讨论】:
-
将
Error:放在子句的末尾,并确保在该语句之前使用Exit Sub。你不应该把它放在IFTHEN声明中 -
另外,
Error变量已被使用,我建议将其重命名为Errhandle
标签: vba excel error-handling powerquery