首页 > 解决方案 > 为什么来自工作表的调用会减慢整个例程?

问题描述

如果我从 VBA IDE 中运行此代码,例如在Test例程上按 F5,我的连接和解析 xml 几乎立即发生。

Sub Test()

Sheet1.Range("4:20000").Clear

Dim con As New msxml2.ServerXMLHTTP60
    con.Open "GET", "mySite", False, "username", "password"
    con.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
    con.send

Dim xmlDoc As msxml2.DOMDocument60
Set xmlDoc = con.responseXML

    parseXmlDoc xmlDoc

End Sub


Private Sub parseXmlDoc(xmlDoc As msxml2.DOMDocument60)

Dim r As Integer: r = 3
Dim c As Integer: c = 0

Dim oo As Object
Dim pp As Object
Dim qq As Object

On Error GoTo ErrHandle
With Sheet1
    Set oo = xmlDoc.SelectNodes("root/myNode")     
    For Each pp In oo
        r = r + 1
        For Each qq In pp.ChildNodes
            c = c + 1
            .Cells(r, c).Value2 = qq.nodeTypedValue
        Next qq
        c = 0
    Next pp
End With
ErrHandle:

End Sub

但是,如果我添加一个超链接并从那里调用例程,则循环通过 xml 文档大约需要 5 秒......为什么会发生这种情况,我该如何阻止它!?

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  Select Case Target.Range.Address(False, False)
    Case "A1"
        Test
  End Select
End Sub

我只是从另一个地方调用例程。我在工作表上没有任何计算,也没有任何其他工作表事件。就像我说的,如果我Test从我的 IDE 运行例程,它会在几毫秒内运行......

标签: excelvba

解决方案


推荐阅读