Ada*_*dam 10 excel vba excel-2007 excel-vba
希望这是一个简单的.我在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 = arrayIndex + 1
End If
Next
getWeekValue = weekValues(weekNumber)
End Function
Run Code Online (Sandbox Code Playgroud)
.
修改数据工作表以匹配以下图像:


.
= getWeekValue(1, Data!$A$2:$M$2)
Run Code Online (Sandbox Code Playgroud)
每周将getWeekValue函数的第一个参数递增1(例如,第1周传递1,第2周传递2,第3周传递3,等等.
奇怪的是,经过一段时间(几分钟)后,图表终于更新了.我不确定这是否是因为我一直在执行其他触发更新的活动,或者因为Excel在几分钟后触发更新.
例如:
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
w.ChartObjects(1).Chart.Refresh
End Sub
Run Code Online (Sandbox Code Playgroud)
