Excel VBA中无法刷新图表(Excel 2016)

我的儿子(15岁)在学校学习摆锤,物理课。 我试图用Excel中的一个模拟摆锤来帮助他,使用2点图表,一个固定点(摆锤的“绳索”连接在一起,一个在时间上摆动(摆锤))。

计算是好的,但我不明白为什么图表不刷新:“钟摆”不动…我刷新Excel图表堆栈溢出的多个post,但没有人可以帮助我解决它…任何想法?

这里是代码(好吧,我不是IT专业人员!)

Option Explicit Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Const g = 9.80665 'gravity constant Const PI = 3.14159265358979 Sub TestSimple() 'Declare variables Dim l 'lenght of pendulum Dim Tô1 'start angle Dim Tôi 'angle of pendulum at time i Dim x 'coordonnates of pendulum on x axis Dim y 'coordonnates of pendulum on y axis Dim Omega 'Sqr(g / l) Dim t 'time Dim s, phi '-1- Initialization of variables l = 0.7 'length is 70 cm Omega = Sqr(g / l) Tô1 = PI / 6 '30 degrees at start '**** NOTE **** 'Equation of pendulum angle in function of time is 'Tô(t)=Tô1*cos(Wo.t) were Wo = sqrt(g/l) = Omega '************** 'Calculation of time needed for 1 calculation s = Timer t = 2 Tôi = Tô1 * Cos(Omega * t) x = l * Sin(Tôi) y = 1 - l * Cos(Tôi) 'paste x and y value into spreadsheet Worksheets(1).Range("A3").Value = x Worksheets(1).Range("B3").Value = y 'refresh chart ActiveSheet.ChartObjects("Chart 1").Chart.Refresh phi = Timer - s '-2- Simulation for 10 seconds For t = 0 To 10 Step phi 'position of pendulum in function of time Tôi = Tô1 * Cos(Omega * t) x = l * Sin(Tôi) y = 1 - l * Cos(Tôi) 'paste x and y in spreadsheet Worksheets(1).Range("A3").Value = x Worksheets(1).Range("B3").Value = y 'refresh of chart ActiveSheet.ChartObjects("Chart 1").Chart.Refresh Sleep (50) 'let machine sleeps for 50 milliseconds, for a smoother look Next t End Sub 

听起来像一个DoEvents问题。 只需将DoEvents放在代码中就可以了:

 ... ActiveSheet.ChartObjects("Chart 1").Chart.Refresh DoEvents Sleep (50) ...