You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MultiPage切换标签后WebBrowser控件调用IWebBrowser2的Navigate方法失败

问题解决:MultiPage切换后WebBrowser控件Navigate报错

问题场景

在VBA用户窗体的MultiPage控件第4页中添加了WebBrowser1控件,搭配两个按钮分别导航至msn.com和google.com。初始打开窗体显示第4页时功能正常,但切换到其他页面再返回第4页后,点击按钮会触发错误:'Navigate' of object 'IWebBrowser2' failed。

原按钮代码:

Private Sub CommandButton23_Click()
    Me.WebBrowser1.Navigate ("https://www.msn.com")
End Sub

Private Sub CommandButton24_Click()
    Me.WebBrowser1.Navigate ("https://google.com")
End Sub

问题原因

MultiPage控件切换页面时,非当前显示页面上的ActiveX控件会被系统卸载,导致Me.WebBrowser1的原有对象引用失效。返回第4页后,控件虽然可见,但引用已指向无效对象,调用Navigate方法时就会报错。

解决方案

方案1:通过MultiPage的Page集合获取控件引用

修改按钮点击事件代码,直接从第4页的Controls集合中获取WebBrowser控件,确保每次点击都使用有效引用:

Private Sub CommandButton23_Click()
    Me.MultiPage1.Pages(3).Controls("WebBrowser1").Navigate "https://www.msn.com"
End Sub

Private Sub CommandButton24_Click()
    Me.MultiPage1.Pages(3).Controls("WebBrowser1").Navigate "https://google.com"
End Sub

注意:MultiPage的Pages索引从0开始,第4页对应索引3;请根据你的MultiPage实际名称修改MultiPage1。

方案2:页面激活时重新初始化控件引用

添加MultiPage的Change事件,当切换回第4页时重新绑定控件引用,避免无效对象:

Private Sub MultiPage1_Change()
    ' 切换到第4页时(索引3)
    If Me.MultiPage1.Value = 3 Then
        Dim webCtrl As Object
        Set webCtrl = Me.MultiPage1.Pages(3).Controls("WebBrowser1")
        ' 可选:初始化导航到空白页,确保控件状态正常
        webCtrl.Navigate "about:blank"
    End If
End Sub

此方案需搭配方案1的按钮代码使用,确保引用始终有效。

内容的提问来源于stack exchange,提问作者Michael Riley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:30:51