我有一张工作表显示形状数据看起来不错。这些形状仅引用数据登台表中的单元格。暂存区域中的数据使用getpivotdata公式来查找数据。
在我的显示表上显示向用户显示值的形状,还有一个组合框可以更改数据透视表。更改数据透视表时,它会更新暂存区域中的数据,从而更改显示工作表中形状的数据。然后我调用一个宏,如果> 0则将形状设置为绿色,如果< 0。
,则设置为红色问题在于,当枢轴数据正在改变并重新计算时,我的形状会根据旧值改变颜色,因为尚未计算新字段。
我已经尝试过DoEvents,但对它的功能缺乏经验,没有运气。我不想在固定的时间内延迟,因为那太可怕了。我还尝试在调用updateColours宏之前调用StagingSheet.calculate,但没有成功。
有什么想法吗?
答案 0 :(得分:0)
您可以尝试Application.ScreenUpdating = false。 E.g:
Sub AllWorkbookPivots()
Dim pt As PivotTable
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.RefreshTable
Next pt
Next ws
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
这可能有效。
答案 1 :(得分:0)
因此,为了确保在调用颜色更改之前计算值,我使用以下宏来使应用程序等到计算结束。
Sub WaitForCalculate()
Application.Cursor = xlWait
Application.EnableEvents = False
Do Until Application.CalculationState = xlDone
DoEvents
Loop
Application.EnableEvents = True
Application.Cursor = xlDefault
End Sub
不是很漂亮,但完成了工作。