希望这是一个简单的.我在MS Excel中有一系列图表指向同一工作表上的数据.工作表上的数据使用VBA函数计算.当VBA函数更新数据时,新数字不会反映在指向它们的图表中.我试过调用Application.Calculate,但是没有做到这一点.有什么想法吗?
UDPATE:
我能够以更小的规模复制这个问题.这是如何做:
在VBA编辑器中打开摘要表并粘贴以下代码:
Run Code Online (Sandbox Code Playgroud)Private Sub Worksheet_Change(ByVal Target As Range) If Target.Parent.Range("worksheetDate") = Target Then Application.CalculateFull End If End Sub
创建一个新的VBA模块
将以下代码粘贴到新的VBA模块(我很抱歉-我不能让堆栈溢出正确格式化这个对我的生活-这是我能得到它做的最好的)
.
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 …
Run Code Online (Sandbox Code Playgroud)目的是在重新计算单元格后刷新Excel中的所有图表.
我使用Microsoft Excel 2010.
我们知道,有一个错误?在Excel中,即使之后Excel也不会更新图表
Application.CalculateFullRebuild
Run Code Online (Sandbox Code Playgroud)
一个已知的黑客是做这样的事情:
Application.ScreenUpdating = False
Temp = ActiveCell.ColumnWidth
ActiveCell.Columns.AutoFit
ActiveCell.ColumnWidth = Temp
Application.ScreenUpdating = True
Run Code Online (Sandbox Code Playgroud)
这确实有效.但是,所有Excel图表都会闪烁(更新时它们会变白).你能告诉我,有什么方法可以避免这种眨眼吗?
我试着打电话
.Refresh
Run Code Online (Sandbox Code Playgroud)
在所有图表上(https://msdn.microsoft.com/en-us/library/office/ff198180(v=office.14).aspx):
For Each ChartObject In ActiveSheet.ChartObjects
ChartObject.Refresh
Next
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我的Excel(2010)显示错误#438"对象不支持此属性或方法".
你能告诉我,我是否会错过重要的事情?