【问题标题】:How to just refresh 1 worksheet Excel如何只刷新 1 个工作表 Excel
【发布时间】:2018-02-17 01:06:14
【问题描述】:

刚学习excel/vb的高级功能,

我无法找到如何刷新工作簿中的 1 个工作表。目前我有

Sub my_onTime()
    Application.OnTime Now + TimeValue("00:00:05"), "refresh_FiveSeconds"
End Sub

Sub refresh_FiveSeconds()
    ThisWorkbook.RefreshAll
my_onTime
End Sub

这会刷新工作簿,但在网上找不到任何我只想单独刷新工作表的内容

【问题讨论】:

  • 那么,您正尝试在一个工​​作表中刷新所有外部数据范围和数据透视表,对吗?
  • @ashleedawg 正确,我已将 api 数据导入 3 个单独的工作表,我希望它们在不同时间刷新。
  • 你是怎么导入的?使用“获取数据 -> 从 Web”? VBA?等等...所以,每个工作表只有一个导入表,对吗?您希望它从 API 重新查询数据 -- 每五秒一次??
  • @ashleedawg,正确,我使用从 web 获取数据,然后使用 now vba 自动更新工作表,虽然单独例如一个 5 秒,下一个工作表 30 秒等。这是我遇到问题的部分,因为我在网上找不到任何对我有帮助的东西
  • 拥有一个全局变量,用于跟踪您所处的步骤。因此,每次触发 5 秒事件时,它都会运行刷新(在所有相关工作表的枢轴上)并增加跟踪变量。如果达到 6,则已过去 30 秒 (6x5) 并刷新不太规则的工作表的枢轴。将跟踪器重置为 1 并重新开始该过程。

标签: vba excel


【解决方案1】:

如果您想刷新所有工作表中的所有数据透视表,请考虑遍历工作表并使用数据透视表:

Public Sub TestMe()

    Dim ws  As Worksheet
    Dim pt  As PivotTable

    For Each ws In Worksheets
        For Each pt In ws.PivotTables
            pt.RefreshDataSourceValues
            pt.RefreshTable
            pt.RepeatAllLabels
        Next pt
    Next ws

End Sub

如果您只想刷新特定的工作表,那么您可以在循环中引入某种类型的条件,例如If ws.Name = "Sheet10WithPivots" Then

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    相关资源
    最近更新 更多