作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试刷新单元格更改的查询,但我不知道如何引用该查询。
我的代码:Sheets("Roster Query").QueryTables(0).Refresh
只是错误:
Run-time error '1004':
Application-defined or object-defined error
我有一个名为“Roster Filter”的工作表,其中包含我想要刷新的查询表。我如何获取该 QueryTable 并刷新它?
编辑:也尝试过:
For Each qt In Sheets("Roster Query").QueryTables
qt.Refresh
Next
这不会出错,但查询不会刷新。
最佳答案
查询表是旧版 Excel 的遗留物,在表出现之前。甚至不知道如何在 Excel 2007+ 中创建一个。
如果您通过“数据/获取外部数据”功能区菜单添加 QT,则您添加的实际上是一个 ListObject
。
我在 Sheet1
上对此进行了测试,添加了一个简单的查询 - Excel 为我创建了 ListObject
:
在立即 Pane 中,我得到以下结果:
?Sheet1.QueryTables.Count
0
?Sheet1.ListObjects.Count
1
我可以重现您完全相同的错误:
Sheet1.QueryTables(0).Refresh 'runtime error 1004
这个错误只是令人震惊的误导,仅此而已 - 它实际上应该是一个索引越界。
解决方案是刷新 ListObject
:
Sheet1.ListObjects(1).Refresh 'works
您也可以通过 ListObject
访问底层 QueryTable
对象:
?Sheet1.ListObjects(1).QueryTable.CommandText 'gives you the query
关于vba - 如何在 VBA 中引用和刷新 Excel 2016 中的查询表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39027286/
我是一名优秀的程序员,十分优秀!