执行时用UDF在单元格中写入内容

Oli*_*tti 3 excel vba excel-vba user-defined-functions

我正在编写一个UDF,它通过多次尝试从网站获取数据,因此可能需要一段时间(10秒钟)来计算.问题是Excel冻结,直到完全计算UDF.

我想在调用单元格中编写"检索数据...",同时下载和处理数据而不挂起Excel.一旦函数结束,将文本更改为结果.

这可以实现吗?

小智 7

在公共模块代码表中假设以下UDF.

Function retrievingData()
    Dim i As Long, t As Double
    For i = 1 To 2
        'Debug.Print i
        t = Now + TimeSerial(0, 0, 2)
        Do While Now < t
            DoEvents
        Loop
    Next i
    retrievingData = 99
End Function
Run Code Online (Sandbox Code Playgroud)

接下来,根据以下公式在A2中创建条件格式设置规则.

=not(a2)
Run Code Online (Sandbox Code Playgroud)

单击格式并指定自定义数字格式,

"Retrieving data..."
Run Code Online (Sandbox Code Playgroud)

最后,将UDF放入A2.

=retrievingData()
Run Code Online (Sandbox Code Playgroud)

警告:您可能需要多个DoEvents循环才能使您自己的UDF正常运行.每一个都会减慢速度.

在此输入图像描述

  • 当人们说"无法做到"时,我喜欢它. (3认同)