エクセルアニメーション

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

エクセルアニメーション第19回(応用編11)航空ショー(2)

2010-06-07 | Weblog
今回は、前回の飛行機の離陸に、ヘリコプターの離陸を追加してみましょう。

ヘリコプターの離陸は飛行機と違って、通常はいったんホバリング上昇(垂直)をしたのち、前進して離陸します。

今回のポイントは”拡大手法”をを応用して機体を次第に大きくなるようにします。

これからしばらくは、前回のシーンを利用しますので、保存してある前回の「エアーショー」ファイルをを開いてください。

VBAを開いてその中に追加していきます。
したがって、”Mytimer”などはそのまま活用できます。



では、見本を参考にしてオブジェクトのヘリコプターを挿入してください。
ここでのポイントは、オブジェクトをいかにうまく切り取ってくるか、または、自作するかです。
機体以外の部分は透明でなければなりません。

背景とも切り取った場合は画像を拡大して機体と背景の境界をなぞっていきます。
このさい、ツールとして「鋏」(http://book.geocities.jp/gardeniainslumber/)という便利なソフトがあります。これをつかうと機体の細かな部分まで背景を切り落とせますので、画面に挿入したときの見栄えが違います。練習してうまくなると、何でも切り抜きたくなるようなすばらしいソフトです。(笑)

できあがったら画面に挿入しましょう。位置は適当でいいです。
今回は、これだけです。名前は”ヘリ”とつけましょう。(カタカナ、ひらがなを間違わないように)

それでは、マクロを組んでいきましょう。

画面のヘリ以外の場所をクリックしてから、[ツール]-[マクロ]-[新しいマクロの記録](XPの場合)をクリックして、”マクロの記録”ダイヤログボックスの”マクロ名”に「ヘリ離陸」と記入してOKします。ここからは記録に入ります。

挿入した”ヘリ”をクリックし、右方向へ約5センチドラッグします。
つづいて、”ヘリ”の周りのハンドル(白い○)のうち、右上の箇所をクリックして約1センチ大きくします。
これでマクロの記録は終了です。
”記録終了”ボタンを押して終了します。

出来上がったモジュールは下のようになっていると思います。(この際、数字は関係ありません)

Sub ヘリ離陸()
'
' ヘリ離陸 Macro
' マクロ記録日 : ユーザー名 :
'
ActiveSheet.Shapes("Picture 1").Select
Selection.ShapeRange.IncrementLeft 42#
Selection.ShapeRange.IncrementTop -0.6
Selection.ShapeRange.ScaleWidth 1.44, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 1.44, msoFalse, msoScaleFromBottomRight
End Sub

それでは、いま作成したモジュールを修正加除していきましょう。
オブジェクトの名前("Picture 1")を(”ヘリ”)に変更します。

はじめにヘリの初期位置です。(いつものことですが、オブジェクトの位置は、パソコンの設定や、諸元によって異なりますからそれぞれで数値を調整してください)また、大きさも見本を参考にして適宜調整しておきましょう。

飛行場の左端の滑走路の上になるように設定します。最初はこの例を参考にしてください。

'へり初期値
ActiveSheet.Shapes("ヘリ").Select・・・オブジェクトの選択
  
  Selection.ShapeRange.Left = 30・・・左端からの位置
Selection.ShapeRange.Top = 270・・・上端からの位置
   
  ここまで設定しておいて、じっさいに動かしてみて位置を確認してください。
  
  確認の方法は、画面を縮小して並べて表示させ、モジュールコードの画面内でクリックしてから、F9キーをクリックしていきます。そうすると一行づつ実行するので、ヘリの動きが確認できます。思う場所に行かなかった場合は、いったんリセットボタンを押してデバッグを中断し、数値を変えて確認を繰り返します。うまく行ったら次へ移りましょう。

  今回はオブジェクトの拡大を行いますので、初期値の大きさを設定します。
Selection.ShapeRange.Width = 80・・・(ヘリの幅)
Selection.ShapeRange.Height = 30・・・(へりの高さ)

  上昇は、モジュールとしては一番簡単な”IncrementTop”で書きます。  
  'ホバリング
  For N = 1 To 60・・・適当な高さまで調整します。
   Selection.ShapeRange.IncrementTop -2 ・・・細かく動かす場合は”-1”にしてもいいでしょう
   DoEvents ・・・忘れずに 
   mytimer (0.1) ・・・上昇速度の調整
  Next
  つぎに、右方向への移動はもっとも基本である”Incrementleft”です。
  ’離陸
 For N = 1 To 250
  Selection.ShapeRange.IncrementLeft 1 + N * 0.03 ・・・スピード拡大手法(だんだん早くする)
  Selection.ShapeRange.IncrementTop -0.8 ・・・上昇
  Selection.ShapeRange.Width = N / 1 + 80 ・・・機体をだんだん大きくする(幅)
  Selection.ShapeRange.Height = N / 3 + 30 ・・・機体をだんだん大きくする(高さ)
  mytimer (0.3 / N)・・・拡大間隔
 Next
  
 機体は画面の右方向へ消えていきます。先ほどの要領で確認をして画面に残るようなら、”離陸”の数値300ぐらいに増やしてください。

 途中の待ち時間調整などを入れて完成です。
 できあがったら、名前を”Heri”としておきましょう。

 最後に、飛行場の画面に戻って、いつものように動作ボタンを挿入して(前回参照)「マクロの登録」画面で”Heri”を選択します。ボタン名は”ヘリ離陸”と変更します。

 完成モジュールをつけておきますので参考にしてください。

Private Sub ヘリ離陸()
Dim N As Integer
'へり初期値
ActiveSheet.Shapes("ヘリ").Select
Selection.ShapeRange.Width = 80
Selection.ShapeRange.Height = 30
Selection.ShapeRange.Left = 30
Selection.ShapeRange.Top = 270
On Error Resume Next
'ホバリング
For N = 1 To 60
Selection.ShapeRange.IncrementTop -2
mytimer (0.1)
Next
mytimer (1)
'離陸
For N = 1 To 250
Selection.ShapeRange.IncrementLeft 1 + N * 0.05
Selection.ShapeRange.IncrementTop -0.8
Selection.ShapeRange.Width = N / 1 + 80
Selection.ShapeRange.Height = N / 3 + 30
mytimer (0.3 / N)
Next
End Sub

エクセル画面上に適当なオブジェクトを挿入して、名前を”へり”とつけて、VBエディターを開き、このモジュールをそのまま貼り付けても動作します。
これまでのマクロに追加する場合は必要ないのですが、あたらしくエクセルを開いて貼り付ける場合はつぎの時間調整用のモジュールが必要です。
※参考までに、時間調整用のモジュールも付けておきます。

Sub Mytimer(t)
mytime = Timer
Do Until Timer > mytime + t
DoEvents
Loop
End Sub

さいごに、いつものようにマクロボタンを作成します。名前には”ヘリ離陸”としましょう。
ボタンをクリックするとうまく動きましたか。
調整箇所が多いので根気よく繰り返して完成させましょう。

完成したら、「エアーショー」として上書き保存しておいてください。

下のURLに、見本のClipがあります、※参考にしてください。(前回のLR離陸つきです)
http://j.mp/9TVuHq

次回は、ヘリのアクロバットをやってみましょう。お楽しみに・・・


最新の画像もっと見る