[VBA] グラフのプロットエリアに円運動を表示させます

 VBA と Excel ワークシートを連携させることで、ある種の運動を簡単にシミュレーションすることができます。今回は グラフのプロットエリアに表示された点(データ要素)を半径 1 の円周に沿って運動させてみます。角度 t を媒介変数とする円の方程式は

x = cost, y = sint

によって与えられます。

グラフのプロットエリアに円運動を表示します

 まずは下図のようなシートを用意します。

 Excel VBA 円運動シミュレーションのワークシート

 セル B2 は空白にしておきます。あとで VBA で計算された度数単位の角度がここに入力されます。セル B3 には B2 の角度をラジアンに変換するために

=RADIANS(B2)

と入力しておきます。セル E3 と F3 には動点の x 座標と y 座標を計算させるために、それぞれ

=COS(B3)
=SIN(B3)

と入力しておきます。そして E3 と F3 だけをデータ要素としてグラフにプロットします。この 2 つのデータを選択してグラフを表示させるとうまくいかないので、まず何も選択しない状態で [挿入]、[散布図]、[散布図] の順にクリックしてデータ要素のないグラフを表示させます。

 Excel データ要素のないプロットエリア

 それから x 軸を右クリックして [軸の書式設定] で境界値の最小値を -1.5、最大値を 1.5 に設定しておきます。y 軸についても同じように設定します(これをしておかないと、点が動くたびに自動で境界値が変化してしまいます)。

 そのあとグラフを右クリックして [データの選択] 、[追加] を選択して [系列 x の値] に E3 を、 [系列 y の値] に F3 を入れて点を表示させます。

 この要素(点)を右クリックして [データ系列の書式]、[塗り潰しと線]、[マーカー]、[マーカーのオプション] を順に選択し、[組み込み] にチェックを入れると要素のサイズを変更することができます。上の図では 7 ポイントに設定してあります。
 

角度 t を 1° 刻みに変化させるマクロ

 VBE には、単に媒介変数 t を 1 ずつ変化させるコードを記述するだけです。

 '角度 t を 1° 刻みに変化させます

 Sub Revolve()

 For i = 1 To 360

  Range("B2").Value = i

  Application.Wait [Now() + "0:00:00.01"]

 Next i

 End Sub

 Revolve マクロを実行すると、プロットエリアのデータ要素が円運動を始めます。

 Excel VBA プロットエリアの動点が回転します

 このぐらいの繰返し処理は本来なら一瞬で終わってしまいますが、4行目にある

Application.Wait [Now() + "0:00:00.01"]

という記述で処理を1ステップごとに 0.01 秒停止させて、点の動きを目で追えるしてあります。 ≫ VBA 数値計算トップページ

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください