如何正确处理VBA中的FollowHyperlink错误?

时间:2018-08-28 13:35:53

标签: vba access-vba

我们当前正在将当前的产品站点转换为新站点,并且我需要进行一些错误处理,以便说如果超链接在新站点上返回错误,请在旧站点上查找它。我遇到的问题是我目前正在尝试打开2个单独的页面。逻辑将是:

  1. 如果在新网站上查找[OldSKU]时出错,请按照 指向[OldSKU]的旧网站的超链接
  2. 如果在新网站上查找[ClosestSKU]时出错,请按照 指向[ClosestSKU]的旧网站的超链接

在任何一种情况下,用户浏览器中只会打开2个标签。在我当前的VBA中,它实际上打开了3个选项卡,我认为我的逻辑不正确。

Private Sub ClosestSKU_DblClick(Cancel As Integer)

    On Error GoTo Error_Old
    Access.FollowHyperlink "https://www.oursite.com/newstorefront/c/p/" & [OldSKU], , True
Error_Old:
    Access.FollowHyperlink "https://www.oursite.com/oldstorefront/search/?text=" & [OldSKU], , True

    On Error GoTo Error_New
    Access.FollowHyperlink "https://www.oursite.com/newstorefront/c/p/" & [ClosestSKU], , True
Error_New:
    Access.FollowHyperlink "https://www.oursite.com/oldstorefront/search/?text=" & [ClosestSKU], , True

End Sub

任何人都能提供的帮助/建议将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

您必须确保错误处理程序不在程序的范围之内。有多种方法可以做到这一点。如果您不想移动它们,可以将它们包装在If False Then中,以确保仅在发生错误时才触发它们。

Private Sub ClosestSKU_DblClick(Cancel As Integer)
    On Error GoTo Error_Old
    Access.FollowHyperlink "https://www.oursite.com/newstorefront/c/p/" & [OldSKU], , True
    If False Then
 Error_Old:
        Access.FollowHyperlink "https://www.oursite.com/oldstorefront/search/?text=" & [OldSKU], , True
    End If
    On Error GoTo Error_New
    Access.FollowHyperlink "https://www.oursite.com/newstorefront/c/p/" & [ClosestSKU], , True
    If False Then
Error_New:
        Access.FollowHyperlink "https://www.oursite.com/oldstorefront/search/?text=" & [ClosestSKU], , True
    End If
End Sub