エクセルアニメーション

エクセルでアニメーションを動かして遊びましょう

エクセルアニメーション第18回(応用編10)航空ショー(1)

2010-05-22 | Weblog

今回は、これまでの手法を活用して、“航空ショー”を作ってみましょう。

ショーは、飛行機(LR-!)の離陸、ヘリ(AH-!)の離陸、ヘリのアクロバット(AH-1×2)と、ヘリ(OH-6×3)の編隊飛行の4部構成です。
下の図は完成図です。実際の航空祭の写真を撮って素材にしています(ヘリの宙返りは「エクセルアニメーション」のいたずらです(笑)

完成図



第1部は飛行機の離陸です。

準備する素材は次のとおりです。
1 飛行場の図または、写真・・・Webで探すか、または、自分で描いてもいいでしょう。ポイントは、空の部分が大きく取れるものです。エアショーが行える広さが必要です。
完成図を参考にしてください。
2 飛行機・・・Webから検索してくるといいでしょう。
ポイントは、航空機の周りは透明であることです。前回のウサギの胴体を切り取った手法で、写真の中から飛行機だけを切り抜いて作りましょう。このできによってリアル感が違ってきます。

※ 航空機関連のすばらしいサイトを紹介しておきましょう。
(ハービーの航空機写真館http://harby.web.infoseek.co.jp/)

素材が集まったらエクセル画面に挿入していきましょう。※順序注意

エクセル画面いっぱいに飛行場写真(または図)を貼り付けます。
つぎに、飛行機を挿入して適当な場所に配置します。
飛行機の写真は、直接コピーをしてきた場合はそのままエクセル画面に貼りつきますが、ファイルとして保存した写真は、“図の挿入”から取り込みます。
下図は、飛行場の画面に飛行機を配置したところです。(赤枠が初期位置です)


飛行機に図のハンドル(周り8箇所の○)がついている状態で“名前”を付けます。
“名前ボックス”をクリックして反転させ、「LR」と入力します。これがこのオブジェクトの名前です。

終わったらいちどほかの場所をクリックしてハンドルをはずしておきます。
(そのあと、もういちど飛行機をクリックして名前ボックスに「LR」とでるか確認しておきます。出ない場合はやり直しです。)

それでは、マクロの記述に入りましょう。

これまで同様に、“マクロの自動記録”を開始します。([ツール]-[マクロ]-[新しいマクロの記録]または、マクロ用ツールの「新しいマクロの記録」ボタンをクリックします。)
マクロ名には「LR離陸」と入力します。



ここからマクロの記録が始まります。

まず、飛行機をクリックして、そのまま斜め右上へ約2センチドラッグします。
つづいて、図のハンドルの上にある緑のをクリックして約2ミリほど左へ回転させます。このとき、飛行機は左へ傾きます。



これでマクロの記述は完了です。

それでは、  ボタンを押してVisual Basic Editorを開きましょう。
(ボタンがない場合は、[ツール]-[マクロ]-[ Visual Basic Editor]、または、「Alt+F11」)) 
左のペーンの Module1 をダブルクリックします。


今記録したモジュールが下のようにでき上がっていると思います。

Sub LR離陸()
'
' LR離陸 Macro
' マクロ記録日
'
ActiveSheet.Shapes("LR").Select
Selection.ShapeRange.IncrementLeft 51#
Selection.ShapeRange.IncrementTop -19.8
Selection.ShapeRange.IncrementRotation -18.43
End Sub
数字は違っていても問題ありません。

各行の説明:
1行目は、オブジェクト(LR)の選択
2行目は、右へ移動
3行目は、上へ移動
4行目は、左へ回転

それではこのモジュールを次のように変更しましょう。
いつものようにできるだけコピーアンドペーストでコードを挿入していきます。
文字のスペース、ピリオド(ドット)にとくに注意しましょう。


Sub LR離陸()

Dim RT As Integer
Dim N As Integer

‘エラー対策
On Error Resume Next

'離陸位置・・・ 離陸位置は画面左下端(赤枠)に調整します
Selection.ShapeRange.Left = 10   ・・・ 飛行機の左端からの位置(調整)
Selection.ShapeRange.Top = 225   ・・・ 飛行機の上端からの位置(調整)
Selection.ShapeRange.Rotation = 360

'地上滑走
For N = 1 To 120      ・・・ 飛行機の移動範囲(画面の右端まで)(調整)
Selection.ShapeRange.IncrementLeft 0.1 * N

  'ローテーション
If N > 40 Then ・・・ローテーション開始地点
RT = Selection.ShapeRange.Rotation
If RT > 350 Or RT <1 Then<br>
Selection.ShapeRange.IncrementRotation ―1  ・・・ 飛行機の姿勢角
DoEvents
End If
End If

  '離陸
If N > 50 Then ・・・上昇開始地点
Selection.ShapeRange.IncrementLeft 1 ・・・上昇速度
Selection.ShapeRange.IncrementTop ―1 ・・・上昇角度(調整)
DoEvents
End If
MyTimer (0.05)
Next N
End Sub

‘時間調整
Sub MyTimer(t)
mytime = Timer
Do Until Timer > mytime + t
DoEvents
Loop
End Sub

できあがったら操作ボタンを付けましょう。
[表示]-[ツールバー]-[フォーム]から“ボタン”をクリックしておいてから画面の右下端にクリックして貼り付けましょう。(完成図参照)



航空機の位置は、パソコンの表示倍率、画面の解像度、モニターの大きさなどにより異なりますので、上記モジュール内の数値を変更してもっとも適切な位置を決めてください。

離陸ボタンを押すと、飛行機は左下端の離陸位置から出発して、速度を次第に上げて離陸していきます。

"Cleared For Take-Off" うまく出発しましたか?

完成クリップは下記URLで見られます。
http://bit.ly/9dNB8l

成功したら。ファイル名を「エアーショー」として保存しておいてください。
次回からこれに追加していきます。

次回は、ヘリの離陸を予定しています。