excel - 数据更改时图表不会自动更新

标签 excel excel-2007 vba

希望这是一个简单的过程。我在 MS Excel 中有一系列图表,它们指向同一工作表上的数据。工作表上的数据是使用 VBA 函数计算的。当 VBA 函数更新数据时,新数字不会反射(reflect)在指向它们的图表中。我尝试调用 Application.Calculate,但这并没有成功。有什么想法吗?

<小时/>

UDP日期:

我能够以更小的规模重复这个问题。方法如下:

  • 创建新工作簿
  • 将工作表 1 重命名为“摘要”
  • 将工作表 2 重命名为“数据”
  • 在 VBA 编辑器中打开摘要表并粘贴以下代码:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Parent.Range("worksheetDate") = Target Then
          Application.CalculateFull
       End If
    End Sub
    
  • 创建新的 VBA 模块

  • 将以下代码粘贴到新的 VBA 模块中(我很抱歉 - 我无法让 Stack Overflow 正确格式化它 - 这是我能做的最好的事情):

     Function getWeekValue (weekNumber As Integer, valuesRange As Range) As Integer   
    
     Dim aCell As Range  
     Dim currentDate As Date  
     Dim arrayIndex As Integer  
     Dim weekValues(1 To 6) As Integer  
    
     currentDate = ThisWorkbook.Names("worksheetDate").RefersToRange.Value
     arrayIndex = 1  
     For Each aCell In valuesRange 
         If month(currentDate) = month(ThisWorkbook.Sheets("Data").Cells( _  
                                       aCell.Row - 1, aCell.Column)) Then
             weekValues(arrayIndex) = aCell.Value 
             arrayIndex = arrayIndex + 1 
         End If 
     Next
    
     getWeekValue = weekValues(weekNumber)   
     End Function  
    

  • 修改数据工作表以匹配以下图像:

alt text

  • 选择单元格 B1 并将区域命名为“worksheetDate”
  • 复制下图中的第 1 行到第 3 行:

alt text

  • 在第 4 行的“X 周”标题下,输入以下公式

 = getWeekValue(1, Data!$A$2:$M$2)

每周将 getWeekValue 函数的第一个参数增加 1(例如,为第 1 周传递 1,为第 2 周传递 2,为第 3 周传递 2,等等。

  • 使用单元格 A3 到 E4 作为数据创建条形图
  • 将单元格 B2 中的日期更改为 2010 年 10 月 1 日到 2010 年 12 月 31 日之间的日期,并选择单元格中当前月份以外的月份。例如,如果日期是 12/11/2010,请将其更改为 11/11/2010 或 10/11/2010。请注意,数据和图表均正确更新。
  • 修改单元格 B2 增益中的日期。请注意,数据会更新,但图表不会更新。

奇怪的是,经过一段时间(几分钟)后,图表终于更新了。我不确定这是否是因为我一直在执行触发更新的其他事件,或者是因为 Excel 在几分钟后触发更新。

最佳答案

刚刚找到解决这个问题的方法,因为我也遇到了同样的问题。

我刚刚在打印或导出之前添加了“DoEvents()”,并且图表已刷新。

示例

Sub a()
   Dim w As Worksheet
   Dim a
   Set w = Worksheets(1)

   For Each a In w.Range("a1:a5")
     a.Value = a.Value + 1
   Next

   DoEvents

End Sub  

关于excel - 数据更改时图表不会自动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4466152/

相关文章:

excel-2007 - 如何在 Excel 2007 中关闭 R1C1 引用样式

excel - 在 Excel 中映射替换字符串

excel - VBA编译错误: Syntax Error for Saving Excel in PDF for Excel 2019

vba - Excel 水平向下展开文本,而不是垂直向右展开

vba - 是否可以使用自定义源数据来创建数据透视表?

sql-server - Excel 2010 与 Excel 2013 VBA 存储过程

vba - 在多个 Excel 工作表上运行宏

excel - 使用 Excel 处理 SQL 数据(读/写)

vb.net - 使用命令行将 *.xls 或 *.xlsx 文件转换为管道分隔的 .csv 文件

Excel VBA : Run a Formula as long as there is a value in Another Column