首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从模态表单调用RTD.RefreshData崩溃

从模态表单调用RTD.RefreshData崩溃
EN

Stack Overflow用户
提问于 2014-02-11 15:09:55
回答 1查看 1K关注 0票数 0

我创建了一个非常简单的模式表单,它有两个按钮:一个是关闭表单,另一个是调用Application.RTD.RefreshData。在Excel2003中,这一切都工作得很好,但是在Excel2010中,Application.RTD.RefreshData崩溃了

运行时错误“1004”:应用程序定义的或对象定义的错误

如果我将表单创建为无模式,那么在Excel2003和Excel2010中,一切都可以正常工作。

值得注意的是,这是表单背后的所有代码:

代码语言:javascript
复制
Private Sub RefreshDataButton_Click()
  Application.RTD.RefreshData
End Sub

Private Sub CloseButton_Click()
  Call Unload(Me)
End Sub

我使用我的工作表中的代码调用表单:

代码语言:javascript
复制
Private Sub CommandButton1_Click()
  Dim form As UserForm1
  Set form = New UserForm1
  form.Show vbModal
End Sub

我已经搜索过谷歌,所以任何有关这方面的信息都没有用。这是Excel2010的一个已知问题,还是真的不允许我从模式表单中调用Application.RTD.RefreshData

编辑:据我所知,在我的会话中没有 RTD服务器。

EDIT2:进一步调查:此错误不在Excel2003或2007中发生,而是发生在2010年和2013年。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-05 11:14:14

在普通的RTD服务器中,您可以使用excel回调来调用UpdateNotify(),然后Excel将根据节流设置和它当前的“忙”程度来决定何时调用RefreshData()。“忙碌”的定义通常包括公式重新计算、保存工作表和打开一个模态对话框等。

Excel通过抛出异常来保护自己不受外部组件的影响。这是有意义的,因为他们不希望他们的应用程序因为贪婪的加载项或宏而变得不稳定或被锁定。本质上,您在代码中输入的所有访问Excel对象模型的任何部分的调用(包括对RefreshData()的调用)都可以抛出异常,如果Excel决定“繁忙”的话。我怀疑在Excel的后期版本中,他们已经收紧了对“忙碌”的定义,这就是为什么您看到了模态对话框的这种差异。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21705593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档