excel - 为什么来自工作表的调用会减慢整个例程?
问题描述
如果我从 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 运行例程,它会在几毫秒内运行......
解决方案
推荐阅读
- javascript - 在 JavaScript 中从数组中删除元素
- youtube-api - Youtube API 直播:嵌入设置无效
- mysql - 为什么mysql在哪里提供带有字母数字值的结果?
- javascript - 屏幕阅读器不是在读取 aria-label 属性中的文本,而是在读取元素中的文本
- android - 有没有办法在点击按钮后隐藏容器/元素?
- power-automate - Flow Automate:如何从分页 API 返回中附加 JSON 数据对象
- javascript - ASP.NET View.aspx 在以零开头时转换字符串
- xcode - XCode 测试覆盖率报告发现只有大括号的行
- amazon-web-services - ECR 上的 Helm 图表
- javascript - 为什么当我的 Javascript 代码正确时,restcountries API 不起作用