2017-02-08 24 views
1

私の息子(15歳)は、学校、物理学の授業で振り子を勉強しています。私は、2点チャート、1つの修正(振り子の「コード」が付いていて、時間内に動くもの(振り子))を使用して、Excelのシミュレートされた振り子を手助けしようとしています。Excel VBA(Excel 2016)のグラフをリフレッシュできません

計算はOKですが私はグラフが爽やかでない理由を理解できません: "振り子"が動かない...私はExcelのグラフをリフレッシュすることでスタックのオーバーフローに関する複数の記事を読んだが、 ?アイデア

ここでコード

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 

答えて

0

(!OK、私はITのプロ...ないですが)であるがDoEvents問題のように聞こえるだけそうのようなあなたのコード内でDoEvents関数を置きます。:

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

OK、ありがとうございます。できます。 – FredC

+0

@FredC心配はいりませんが、答えの隣に緑色のダニを打つことを忘れないでください。あなたの息子を助けることを願っています – User632716

関連する問題