这似乎是一个相当普遍的问题,但我发现的解决方案似乎都没有效果.
我从SQL Server中获取一些数据并将其复制到工作表中.然后我想从新数据中复制一个范围并用它做其他事情.所有这些都发生在单个vba函数中.
我的问题是当函数从Excel运行时它移动到函数的第二部分而不等待查询返回所需的数据.
当然,当我从vba IDE运行它时,该函数工作正常.
Dim a As New ADODB.Connection
Dim r As New ADODB.Recordset
a.Open (connStr)
Set r = a.Execute(sqlstr)
sht.Range("A2").CopyFromRecordset r
'please wait here until the proc has executed?
checkData = sht.Range("A2").Value
Run Code Online (Sandbox Code Playgroud)
当我从Excel运行该函数时,checkData始终为空,当我使用F5运行它时,它始终具有所需的数据.
小智 11
尝试使用:
Application.CalculateUntilAsyncQueriesDone
Run Code Online (Sandbox Code Playgroud)
执行SQL之后,但在复制RecordSet之前
Set r = a.Execute(sqlstr)
Application.CalculateUntilAsyncQueriesDone
sht.Range("A2").CopyFromRecordset r
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22973 次 |
| 最近记录: |