【问题标题】:excel chart not updating when data changed by vbavba更改数据时excel图表不更新
【发布时间】:2020-03-27 23:22:30
【问题描述】:

我有一个气泡图,我试图通过宏更新表格和随后的图表来添加“运动”。我有一个单元格用作我的数据表用来获取数据的“偏移量”。我有一个运行 VBA 宏的按钮,该宏在我的数据中每个月更新这个“偏移”单元格,当偏移更新时更新数据表。

当我手动更改偏移单元格时,表格和图表都会更新。但是,当我单击按钮并运行 VBA 宏时,只有表格更新,而不是图表。

我已经研究过可能的解决方案,包括位于 Stack Overflow 上的那些项目,并尝试了以下方法:

-DoEvents
-Applications.Calculate
-ActiveWorkbook.RefreshAll
-Chart.Refresh
-setting the Application.ScreenUpdating to false and back to true

这是我的 VBA 代码:

Sub Button7_Click()
Dim i As Integer

For i = 0 To 9:
    Range("P1").Value = i
    Application.Calculate
    Application.Wait DateAdd("s", 1, Now)
Next
Range("P1").Value = 0
End Sub

当表格通过 VBA 更新时,更新图表应该不难。

【问题讨论】:

  • 欢迎来到 SO!这是数据透视图还是标准问题 DIY 图表?
  • 当我运行这个 (Win Excel 2013) 时,图表会在运行期间更新。
  • @urdearboy 这是一张普通的 DIY 图表。我没有使用数据透视表。我也尝试调整等待时间。我尝试了 3 秒、5 秒和 30 秒,但图表永远不会自行更新。
  • @TimWilliams 我正在使用 Excel 2016 并且我提供的 VBA 代码不会更新图表。
  • this 帖子上有 34 个解决方案。希望其中一个能帮助你

标签: excel vba charts


【解决方案1】:

我遇到过这个问题。 似乎与 Excel 2016 有关。

Sub CommButton1_Click()
i = Cells(4, 24)
start = Cells(4, 22)
rango = Cells(4, 23) + start
Do Until start > rango
    Sleep (20)
    Cells(4, 25).Value = start
    start = start + i
    DoEvents
    DoEvents
Loop
End Sub

灵魂似乎是添加另一个DoEvents。我在 Excel 2016 中进行了尝试,它可以工作,但延迟时间很长。

【讨论】:

    【解决方案2】:

    根据我的测试,以下代码适用于我:

    Sub Button7_Click()
    Dim i As Integer
    Dim sheet As Worksheet
    Set sheet = Worksheets("Sheet10")
    
    ActiveSheet.EnableCalculation = True
    Application.ScreenUpdating = True
    For i = 1 To 9
       'sheet.Range("A1") = CStr(i)
       sheet.Cells(i, 1) = CStr(i)
        'Application.Wait (DateAdd("s", 1, Now))
    Next
    
    sheet.UsedRange.Calculate
    
    ActiveSheet.EnableCalculation = False
    Range("A1").Value = 0
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 2020-06-30
      • 2017-10-04
      • 1970-01-01
      相关资源
      最近更新 更多