ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7416|回复: 7

[求助] 如何确定ActiveWorkbook.RefreshAll 已经完成

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-6-20 10:20 | 显示全部楼层 |阅读模式
我在excel中建立了一些数据链接,链接到access数据库,用来检查数据是否有缺失

下图红色方框部分如有数据,则将其复制到其他表中吗,代码我已经写好,但是在运行过程中发现

运行ActiveWorkbook.RefreshAll后,链接表还没有全部刷新完,系统已经执行后面的语句了,导致判断失败,所以请问如何知道所有链接表都已经更新完或者说,在全部刷新完成前,暂缓运行后面的代码,我试过application.wait 跟do loop 方法,都不行

sub 补充缺失记录
     ActiveWorkbook.RefreshAll
    Worksheets("计划联络表汇总整理").AutoFilterMode = False
    a0 = Worksheets("计划联络表汇总整理").Range("a65536").End(xlUp).Row + 1
    Worksheets("数据检查").Select
    a1 = Application.WorksheetFunction.Match("Z002_数据缺失_B006Y与B004N", Worksheets("数据检查").Range("a1:a30000"), False)
    a2 = a1 + 2
   
    If Cells(a2, 4) <> "" Then     因为数据刷新未完成,执行到这里的时候,单元格为空值,导致复制数据失败
        a3 = Worksheets("数据检查").Range("D" & a2).End(xlDown).Row
        If a3 > 65536 Then
            a3 = a2
        End If
    Worksheets("数据检查").Range("B" & a2 & ":F" & a3).Copy Sheets("计划联络表汇总整理").Range("a" & a0)
    计划联络表重算及复制到ACC
    ActiveWorkbook.RefreshAll
    End If
End Sub



2.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-20 10:58 | 显示全部楼层
自己顶一下

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-20 12:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
再自己顶一下,中午都休息了吗

TA的精华主题

TA的得分主题

发表于 2014-6-20 13:22 | 显示全部楼层
qq89486841 发表于 2014-6-20 12:43
再自己顶一下,中午都休息了吗

将有关查询的属性里的“后台刷新”禁用

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-20 13:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sz_wap 发表于 2014-6-20 13:22
将有关查询的属性里的“后台刷新”禁用

非常感谢,按你的方法已经解决了,真的很感谢

TA的精华主题

TA的得分主题

发表于 2019-10-25 16:17 | 显示全部楼层
sz_wap 发表于 2014-6-20 13:22
将有关查询的属性里的“后台刷新”禁用

将有关查询的属性里的“后台刷新”禁用
录制宏的时候有这个代码
  ActiveWorkbook.RefreshAll
默认下,该代码并不按顺序执行,而是在vba代码执行结束后,运行一次.
导致的问题:我需要先刷新,再复制,结果就无法获得刷新后的数据.
按这个方法,就可以在代码出现的位置进行刷新操作,问题解决,感谢!

TA的精华主题

TA的得分主题

发表于 2020-2-27 16:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-8-14 10:35 | 显示全部楼层
诡途 发表于 2020-2-27 16:01
想问下楼主怎么实现的?

楼主的问题是:
在excel中建立了一个查询, 链接到外部数据库
写了一段代码, 使用ActiveWorkbook.RefreshAll刷新这个查询
但是由于无法判断这个刷新是否完成了, 导致后面的代码运行出错


后面的回复其实已经解决了这个问题:
将有关查询的属性里的“后台刷新”禁用

具体做法是: 数据->查询和链接->在右边弹出的窗格里面,选中查询->右键->属性->把允许后台刷新前面的勾去掉.


希望这么描述能帮到你
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-19 07:42 , Processed in 0.045721 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表