エクセルアニメーション

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

エクセルアニメーション第22回(応用編14)くじらのデート(1)

2011-04-28 | Weblog

今回は、画面テクニックでオブジェクトを出没させてみましょう。
寒い?南極でのくじらのデート風景です。

完成図
  

完成図を参照しながら、まず、海の画面を挿入します。エクセルの挿入ー図ークリップアート(または、図形描画ツールバー)                                                            ↓       


で、”南極海”のキーワードで検索してください。その中から下の図を探して挿入します。
取り込んだら、自分のパソコンのディスプレーの大きさいっぱいに合うように調整しましょう。

南極海

ここから仕掛けを作成します。
これまでも紹介してきた”はどこぴ君”や、”Faststone"など(フリーソフト)を使って現在の海の部分の下2分の一を切り取ります。

切り取った海面
 

つぎに挿入するオブジェクトを取得します。
”南極海”と同じようにクリップアートから”くじら”で検索して、下図のくじらをDLします。

取り込んだら名前を付けておきましょう。今後この名前でオブジェクトを動かしますので、数字は全角、半角を混同しないようにしましょう。
そして、くじら(潮を含む)の高さを先ほど切り取った海面の高さと同じ(少し低く)まで縮小しておきます。

        名前 「くじら1」

         名前 「くじら2」

「くじら2」(このくじらは、左右反転しておきます。[図形の調整]-[回転/反転]-[左右反転])

完成図を参考にして、だいたいの位置に配置します。正確な位置はあとで調整します。
見本を見て配置をしたら画面の前後関係を確認しておきましょう。
画面の順序は、南極海が最背面で、つぎにくじら、海面が最前面になります。

それでは、ここでマクロを作っていきましょう。
マクロの自動記録を利用して基本となるモジュールを記録していきます。
マクロの自動記録ボタンをクリックしたのち、マクロ名を「くじらのデート」として「OK」します。

 

 いよいよここから記録です。

右のくじら(くじら1)をクリックして、上方向へ約2センチほど移動させるだけです。
これでおしまいです。
マクロの記録ボタンの右の”Visual Basic Editor" ボタンを押して記録を確認してみましょう。
下のようなモジュールができたと思います。(数値は違っていても支障ありません) 

Sub くじらのデート()
'
' くじらのデート Macro
' マクロ記録日 :  ユーザー名 :'

'
    ActiveSheet.Shapes("くじら1").Select
    Selection.ShapeRange.IncrementLeft 0.6・・・・・左右方法(この行は今回は削除します
    Selection.ShapeRange.IncrementTop -31.8・・・上下方向
End Sub

これは、くじら1を画面の上方へ動かす部分です。
くじらは真上へ移動させますので、上のモジュールの2行目(左右方向)は削除します。

オブジェクトの移動には、2つの方法があります。
1) 移動量を指定する方法。(Selection.ShapeRange.Incrementtop  1)
2) 位置を指定する方法。(Selection.ShapeRange.top = 10)
どちらを使うかは、概して移動量によって変わってきます。移動範囲が大きい場合や、画面の一定の位置を移動する場合は2)のほうがいいでしょう。

今回は2)の方法でやってみましょう。
ここでは 繰り返しのFor ・・・Next に”Step”をつけて使ってみることにします。(数値が減る場合は必ず必要)
今回はオブジェクトが画面の上方へ行くため、数値は小さくなるので、”-”をつけて指定します。

ActiveSheet.Shapes("くじら1").Select
 
    For n = 200 To 150 Step -1
     変数nを200から150まで、1ずつ減じていきます。
  Selection.ShapeRange.Top = n
     オブジェクトの上端を n の位置に移動します。
    Mytimer (0.05)
     移動ごとに0,05秒の間待機させます。
    Next
     繰り返しです。

End Sub

For ・・・Nextに使っている数字200は、くじらの潮の上端が切り取った海面に隠れる位置に調整します。
高すぎる場合は数値を大きく、下すぎる場合は数値を小さくします。
つぎに、数字150はくじらの下端が海面から出てしまう寸前でとめるように調整します。

それでは、海面を元の位置に戻してくじらを見えないようにして動かせて見ましょう。
この際、海面と元の南極海の海との境目が目立たないようにするのがコツです。

ここでいつものタイマーを作っておきましょう。(これはマクロの最後に付けておいてください。)

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

それでは一度動かせてみましょう。
うまくくじらが海面から潮を吹きながら出てきましたか?

成功したら、つぎは再び海中へもぐるところを追加しましょう。
これは今やった反対になるだけなので簡単です。

    For n = 200 To 150 STEP ー1
     変数nを200から150まで、1ずつ減じていきます。
  Selection.ShapeRange.Top = n
     オブジェクトの上端を n の位置に移動します。
    Mytimer (0.05)
     移動ごとに。05秒の時間待機させます。
    Next
     繰り返しです。

End Sub

これをもとにして、編集していきます。
これまでもほとんどこの形式でオブジェクトを動かしてきましたのでお分かりかと思います。
では、これを下のように変更してください。  
内容はおなじコードの繰り返しですから、コピーを活用して一部手直ししましょう。

初期位置を決めておきます。(パソコンによって位置が変わります。)
そこからいったん浮上します。(同上)
しばらく海面上にいます。(3秒)
ふたたび海面下へ潜水します。

以上の繰り返しです。

あとは左右のくじらの名前を間違わないこです。

それではコードを修正していきましょう。(第1回の完成マクロ)

Private Sub くじらのデート()

        ActiveSheet.Shapes("くじら1").Select                 '右のくじらの初期位置
            Selection.ShapeRange.Top = 200
            Selection.ShapeRange.Left = 500

        ActiveSheet.Shapes("くじら2").Select                 '左のくじらの初期位置
            Selection.ShapeRange.Top = 200
            Selection.ShapeRange.Left = 50

        ActiveSheet.Shapes("くじら1").Select                 '右のくじらを選択
            For n = 200 To 150 Step -1
                Selection.ShapeRange.Top = n                '浮上
                Mytimer (0.05)
            Next

        Mytimer (3)                                                   '海面上

            For n = 150 To 200
                Selection.ShapeRange.Top = n              '潜水
                Mytimer (0.05)
            Next

        ActiveSheet.Shapes("くじら2").Select                 '左のくじらを選択
            For n = 200 To 150 Step -1
                Selection.ShapeRange.Top = n                '浮上
                Mytimer (0.05)
            Next

        Mytimer (3)                                                   '海面上

            For n = 150 To 200
                Selection.ShapeRange.Top = n              '潜水
                Mytimer (0.05)
            Next

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

できたら一度動かしてみましょう。

[ツール]-[フォーム]-[ボタン]とクリップして、画面の右下の適当な場所でクリックします。
ボタンが出来上がったでしょうか。

できあがったボタンを右クリックして”マクロの登録”で「くじらのデート」といれてOKします。

それでは、今作成したボタンをクリックして見ましょう。
うまくくじらが上下に動きましたか?
海面からの浮上、潜水がうまく見えるように調整してみてください。

次回は、くじらのデートをさせて、ことばも付けて完成させましょう。

それでは次回まで・・・