goo blog サービス終了のお知らせ 

エクセルアニメーション

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

エクセルアニメーション第14回(応用編6)梅雨(柳にカエル)

2009-06-13 | Weblog
いよいよ梅雨のシーズンになりました。
梅雨と言えば雨、雨と言えばカエル、カエルと言えば柳。

柳に飛びつくカエルを動かしてみましょう。
小野の東風の気分になって、優雅に梅雨を乗り切りましょう。

今回も、技法は上下、左右移動と出現、消去です。
それらの組み合わせを考えて物語を作りましょう。

まず、クリップアートから、”カエル”で検索して素材を取り込みます。
[挿入]-[図]-[クリップアート]で”カエル”と入力して検索します。



見本のようなカエルが見つかったら、クリックするとエクセル画面に取り込まれます。


図形の調整ツールバーから[回転/反転]-[左右反転]で反転させて右向きにしておきます。


さらに、周囲のハンドルを使って適宜の大きさに調整しておきましょう。
おわったら、カエルの絵のハンドル(周りの白い丸)をはずしておきます。

今回は、動作を区分してはじめます。
1回目は、カエルのホップ、ステップ?です。

いつものように、[ツール]-[マクロ]-[新しいマクロの記録]を開きます。
マクロ名の部分が反転しているので、そのまま”ホップ”と入力して「OK」します。これでマクロの記録が始まります。

まず、カエルをクリックして選択します。そのまま右上へ約5センチぐらい移動させます。
「記録終了」ボタンをクリックして終了しましょう。

つぎに、第1回で紹介したマクロツールバーの”Visual Basic Editor”ボタン(または、Alt+F11)をクリックしてでき上がったモジュールを見ましょう。



出来上がったマクロは次のようになっていると思います。(数値は違っていてもかまいません)

Sub ホップ()
'
' ホップ Macro
' マクロ記録日 : ユーザー名 :

'
ActiveSheet.Shapes("Picture 1").Select
Selection.ShapeRange.IncrementLeft 60#
Selection.ShapeRange.IncrementTop -38.4
End Sub

これを次のように修正しましょう。

いつものように、できるだけ上の文をコピーして使いましょう。コンマ(,)と、ピリオド(.)を間違わないようにしてください。(コピーの際に落とさないように)
また、(’)のついている部分は説明ですから入力する必要はありません。

黒太字部分は修正なし、赤字部分は一部修正、青字部分は新規追加です。

Sub ホップ()'
' ホップ Macro
' マクロ記録日 : ユーザー名
'
ActiveSheet.Shapes("Picture 1").Select
'初期値
Selection.ShapeRange.Left = 0     ’画面左端
Selection.ShapeRange.Top = 200     ’画面やや下のほう 
DoEvents
For m = 1 To 5      ' ホップ回数
v = 2        ' ホップする高さ
For n = 1 To 41          ’v の値X20 + 1
                      ’v が3なら61となります
Selection.ShapeRange.IncrementLeft 1 '右への移動量
Selection.ShapeRange.IncrementTop -v  '上下移動量
v = v - 0.1             'ジャンプ角度
DoEvents
Next n
'停止時間
Mytime = Timer
Do Until Timer > Mytime + 0.5         ’0.5秒経過待ち
DoEvents
Loop
Next m
End Sub

最後に、”実行ボタン”を作成します。
エクセル画面から、[表示]-[ツールバー]-[フォーム]から、”ボタン”をクリックしてからいったん離して「A1」セルをクリックしてください。
コマンドボタンができて、”マクロの登録”画面が出たと思います。
その中の”ホップ”をクリックすると完成です。



それでは、ボタンを押して動かしてみましょう。
うまくカエルが跳びましたか? 
位置や、高さ、移動量などは、モジュールを見ながらいじってみてください。
説明がつけてあるので、各自の画面にあったようにカスタマイズしましょう。


次回は、柳に飛びつくほうのカエルを作成しましょう。

エクセルアニメーション第13回(応用編5)鯉のぼり

2009-05-03 | Weblog
5月5日はこどもの日。そこで今回は、シーズンにちなんで「鯉のぼり」を泳がせて見ましょう。



マクロは、回転と移動の組み合わせです。ただ、鯉の胴体と尾の位置を細かく調整するのがポイントです。

まず、アニメーションの材料を探してきましょう。インターネット上にも鯉のぼりの素材がたくさんありますので探してみましょう。

今回使用するのは、鯉3匹とオートシェイプです。鯉はイラスト画を使用します。写真を使用すると、鯉のほかの部分を切り抜くのが大変です。イラストを背景なしで保存して使用します。
練習のためなら、このブログのイラストを切り抜いても使用できます。

見つかったら、鯉の胴体と尾の部分を切り離します。絵を参考にしてください。

これには、”ハドコピくん”というフリーソフトが大変便利です。イラストでも、写真でもほしいところを切り取ることができます。使い方も簡単ですから、ぜひ、ダウンロードして利用してみましょう。

切り取る際のポイントは、オブジェクト以外の部分にまったく別の色をつけておくことです。下の絵の中では黄色の部分が切り取りの余白です。

切り取ったらそのまま、エクセル画面に貼り付けましょう。
貼り付けたなら、周囲の黄色い部分を取り除くため、図ツールバーから「透明な色に設定」ボタン(右から2番目)をクリックしてから、取り除く色の部分(この例では黄色い部分ですが、背景に近い単色がベストです)をクリックします。



そうすれば、同色の部分がすべて消えてなくなります。


真鯉胴


真鯉尾
 
  
緋鯉胴

  
緋鯉尾


子供鯉

それぞれの名前を”真鯉胴”、”真鯉尾”、”緋鯉胴”、”緋鯉尾”、”子供鯉”としてください。

これで準備が完了です。

完成図を参考にして配置してください。

矢車は、オートシェイプのフローチャートの”論理和”を使ってみました。
ほんとうの矢車をインターネット条件付き書式から探してきてつけてもいいでしょう。これに”風車”の名前をつけておきます。これは回転します。

ポールは、同じくオートシェイプの”四角形”で細長くして作ります。
引き上げロープはオートシェイプの”線”から”曲線”でカーブをつけながらひきます。
鯉の口からの紐は、”コネクター”から”直線”または、”カギ線コネクター”を使用します。ロープの適当な位置(鯉の近く)に小さな四角(または楕円)をつけておいて、そこから鯉の口へつなぎます。こうすることによって鯉がゆれたときに紐も一緒に動いてくれます。

あとはマクロをつけていきましょう。
同じようなモジュールが繰り返し使われているので、コピーして使うと簡単に入力できます。
下のモジュールをそのまま貼り付けても動きます。
うまくいかないときは、オブジェクトの名前をもう一度確認してみましょう。

Sub 鯉のぼり()
'
' 鯉のぼりMacro
' マクロ記録日 :
'初期値

For n = 1 To 10

'初期値
' '真鯉
ActiveSheet.Shapes("真鯉胴").Select
Selection.ShapeRange.Rotation = 0
Selection.ShapeRange.Left = 150
Selection.ShapeRange.Top = 50

ActiveSheet.Shapes("真鯉尾").Select
Selection.ShapeRange.Rotation = 0
Selection.ShapeRange.Left = 335
Selection.ShapeRange.Top = 45
DoEvents

'緋鯉
ActiveSheet.Shapes("緋鯉胴").Select
Selection.ShapeRange.Rotation = 0
Selection.ShapeRange.Left = 150
Selection.ShapeRange.Top = 130

ActiveSheet.Shapes("緋鯉尾").Select
Selection.ShapeRange.Rotation = 0
Selection.ShapeRange.Left = 335
Selection.ShapeRange.Top = 141
DoEvents

'子鯉
ActiveSheet.Shapes("子供鯉").Select
Selection.ShapeRange.Rotation = 5
Selection.ShapeRange.Left = 150
Selection.ShapeRange.Top = 220

For m = 1 To 12
ActiveSheet.Shapes("真鯉胴").Select
Selection.ShapeRange.IncrementTop 1
Selection.ShapeRange.IncrementRotation 1
ActiveSheet.Shapes("真鯉尾").Select
Selection.ShapeRange.IncrementTop 1
Selection.ShapeRange.IncrementRotation -2
Selection.ShapeRange.IncrementLeft -1
ActiveSheet.Shapes("緋鯉胴").Select
Selection.ShapeRange.IncrementTop 1
Selection.ShapeRange.IncrementRotation 1
Selection.ShapeRange.IncrementLeft 0.1
ActiveSheet.Shapes("緋鯉尾").Select
Selection.ShapeRange.IncrementTop 1
Selection.ShapeRange.IncrementRotation -2
Selection.ShapeRange.IncrementLeft -0.5
DoEvents
ActiveSheet.Shapes("風車").IncrementRotation 15
Next
For i = 1 To 12
ActiveSheet.Shapes("子供鯉").Select
Selection.ShapeRange.IncrementRotation 1
Selection.ShapeRange.IncrementTop 2
ActiveSheet.Shapes("真鯉胴").Select
Selection.ShapeRange.IncrementTop -1
Selection.ShapeRange.IncrementRotation -2
DoEvents
ActiveSheet.Shapes("真鯉尾").Select
Selection.ShapeRange.IncrementTop -2
Selection.ShapeRange.IncrementRotation 3
Selection.ShapeRange.IncrementLeft -0.2
DoEvents
ActiveSheet.Shapes("風車").IncrementRotation 15
Next
For m = 1 To 12
ActiveSheet.Shapes("子供鯉").Select
Selection.ShapeRange.IncrementRotation -1
Selection.ShapeRange.IncrementTop -2
ActiveSheet.Shapes("緋鯉胴").Select
Selection.ShapeRange.IncrementTop -1
Selection.ShapeRange.IncrementRotation -1
Selection.ShapeRange.IncrementLeft -0.1
DoEvents
ActiveSheet.Shapes("緋鯉尾").Select
Selection.ShapeRange.IncrementRotation 2
Selection.ShapeRange.IncrementTop -1
Selection.ShapeRange.IncrementLeft 0.5
DoEvents
ActiveSheet.Shapes("風車").IncrementRotation 15
Next
Next
End Sub


完成図は下のようになります。
動きは、マクロの数値を変えながらいろいろと挑戦してみてください。
また、吹流しなどもつけるとにぎやかになるでしょう。
動かし方はまったく同じです。名前だけ間違わないように注意しましょう。



バックの野原の写真はおなじみのデスクトップの一部分を切り出して使っています。ほかにいい景色(茶畑など)があれば利用してみましょう。

背景を貼り付けると鯉のぼりが消えてしまいますがあわてず、右クリックから”順序”を”最背面”にしましょう。

最後に、画面の右下端に”スタート”と”ストップ”ボタンをつけましょう。
ボタンのつけ方は、”アクロバット飛行”編を参考にしてください。

田舎ののどかな五月の節句を演出できたでしょうか。

エクセルアニメーション 鯉のぼり

エクセルアニメーション第12回(応用編4)花見バス

2009-03-22 | Weblog

今回は、シーズンにちなんで「花見バス」を走らせて見ましょう。



マクロそのものはこれまでの応用ですからとくに難しいところはありません。

アニメーションを楽しむには動かすオブジェクトをいかに集めるかにもかかっています。

ここでは、基本的にだれでも手に入れることができるOffice クリップアートを利用していますが、
前回も紹介したようにインターネット上には無数の素材がアップされています。
その中からテーマにあったものをうまく見つけ出してくるのも面白いと思います。いろいろ探した見てください。

それでは、今回は下のクリップを取り込んでください。
検索ワードは”花見”です。右のクリップは”山”で検索してください。取り込み方は第16回を参照してください。

clip






バスは左はクリップアートから、右はインターネット上から探してきたものです。自分の好みに合ったものを探してみましょう。



それでは、クリップを配置していきましょう。

まず、”山”を画面いっぱいに引き伸ばしていきます。引き伸ばす際に画面の右と下ははみ出さないように少し残しておいてください。
いっぱいにしようとすると極端に大きくなってしまいます。どこに行ったかわからなくなってしまいますよ(笑)

その中に、桜の木々を配置します。場所は適当に置いていきましょう。あとで修正することもできます。
今は、配置していく順序が大切です。遠くのものから順に配置していきます。




遠くの桜を配置した図です。
右の桜は、左の桜をコピーしておいて左右反転をさせたものです。
(反転は、第17回を参照)






つぎに、バスを配置します。左の図を参考にして配置してください。
左右は関係ないので上下だけ気をつけてください。(あとでも修正できます)

最後に、花見客のクリップを左右反転したものを両側に配置します。
バスの手前に見えるようになっていますか。
なっていない場合は、クリップを右クリックして”順序”をクリックして
”最前面へ移動”に設定してください。




最後に、3人グループのクリップをコピーして反転させ、左右に配置します。



これが完成図です。桜や花見客の数、位置などは自由に変更して楽しいものにしてください。
ただし、その際は、順序をまちがわないように注意してください。

ひきつづきマクロを組んで行きましょう

いつものように「新しいマクロの記録」を開きます。
[ツール]-[マクロ]-[あたらしいマクロの記録]



マクロ名には”花見”と入れて「OK」します。

つぎに、バスをクリック(ハンドルが付くように)します。この際、前面にあるクリップ(花見客など)と間違わないように注意しましょう。

そして、そのままバスを右方向へ数センチ動かします。

これで終了です。「記録の終了」ボタンをクリックします。

ひきつづきマクロの修正に移ります。

VBEを開きます。



さきほど記録したマクロを下記のように修正、加除します。
赤字の部分は、画面を見ながら、バスが適当な位置(高さ)へ来るように修正してください。
数字を大きくすると、下のほうへ下がります。位置は、完成図を参考にしてください。
今回は、バスが上下に震動しながら走るようにしました。
”Left”と”Top”の組み合わせです。

Sub 花見()
' 花見 Macro
' マクロ記録日 : ユーザー名 :
ActiveSheet.Shapes("Picture 10").Select
Selection.ShapeRange.Left = 0
Selection.ShapeRange.Top = 270

m = 1
For n = 1 To 600
Selection.ShapeRange.IncrementLeft 1
Selection.ShapeRange.IncrementTop 1 * m
DoEvents
If m = 1 Then
m = -1
Else
m = 1
End If
Next
End Sub


できたら、ボタンをつけましょう。(前回参照)
[表示]-[ツールバー]-[フォーム]で”ボタン”をクリックして画面に貼り付け、”マクロの登録”画面で”花見”をクリックします。




これで完成です。

桜の木々や、花見グループの間を観光バスがゆっくりと左から右へ通り過ぎていきます。
エクセルアニメーションで、ゆっくり花見を楽しんでください。

公開ソフト
http://yahoo.jp/box/-BfeYX

では、また、次回に・・・


エクセルアニメーション第11回(応用編3)ひな祭り

2009-01-10 | Weblog

今回は、あたらしく乱数を紹介しましょう。




アニメーションでオブジェクトなどを動かす場合に、乱数(無作為に発生させた数値)を使用してその位置や時間などを操作することができます。

コードはつぎのとおりです。
  rd = Rnd()  ・・・Random Number(乱数)

これで、rd には "0以上 1以下"の無作為な数値”(0.1  0.5  0.7 など)が得られます。

通常、小数点以下の数字では扱いにくいので10倍し、”int()”関数で整数として使用します。

  rd = int(rand()*10)   ・・・rdには、0から10までの乱数が得られます。

それでは、今回はひな祭りの時期にちなんで桃の花びらをひらひらと舞わせて見ましょう。この花びらの落下に乱数を使用します。

はじめに、ひな壇の場所を作成するため、エクセル画面のセルの枠線を消しておきます。
[ツール]-[オプション]-[表示]-[ウインドウオプション]で”枠線”のチェックをはずします。これで、枠線が消えて画面が真っ白になったと思います。

つぎに、オートシェイプの”四角形”をクリックしておいて、画面いっぱいに貼り付け、はなやかな色合いとして、赤と黄色のグラデーションをつけます。



四角形の中で右クリックして、[オートシェイプの書式設定]-[色と線]-[塗りつぶし]-[色]から”塗りつぶしの効果”をクリックして”赤と黄色のグラデーションをつけます。詳細は下の図を参考にしてください。





ひきつづき、いつものように素材を集めます。インターネット上の無料素材集などから集めましょう。
今回は、素材屋小秋さん(http://www.koakishiki.com/sashie/about.html)から頂いたものを紹介します。

内裏様とお雛さま、屏風 各1
ぼんぼり、菱餅、白酒、雛あられ  各1です。
桃の花、花びら(桃の花、花びらは適当に見つけて集めてください。なければペイントなどで描いてみましょう。(見本を参考にして集めてみてください。)

ぼんぼりは、2本になっていますので、ペイントなどを使用して1本削り取ります。(1本の分は、なかに文字が入っているので透過が困難です)



小物は、それぞれコピーして2こづつにしておきます。
コントロールキーを押しながらドラッグするとコピーすることができます。

花びらは10枚必要なので順次コピーして作成し、一枚づつ花びらに名前をつけていきます。

名前は”hana1”から”hana10”までです。
花びらを並べておいて、1枚づつ花びらをクリックして、名前ボックスの中をクリックします。現在の名前(図1など)が青反転したところで”hana1”と入力してEnterします。順次10枚の花びらに名前をつけます。かならず、1から10にしてください。



できたら、大きさ、方向を自由に変えておきます。

用意できたら下の絵を参考にしてエクセル画面に配置してください。

配置する場合には、”順序”に気をつけましょう。

まず、グラデーションのついた四角形を最背面に指定します。(これをしないと何も見えなくなってしまうことがあります。笑)

あとは、つぎの順に”最前面”としていきます。
屏風、桃の花、ぼんぼり、お内裏様、お雛様、雛あられ、菱餅、白酒
桃の花びらは最前面にしておきます。
花びらは、向き、位置、大きさを偏らないようにランダムに配置してください。

これらは、配置が終わってからでも調整できますので、気楽にやってみましょう。



これで準備ができましたので、マクロを書き込んでいきましょう。

今回は、マクロの自動記録を使う場面は少ないので、手入力で挑戦してみてください。
"Selection.ShapeRange"が多いので、コピーをしてもいいでしょう。
また、"With"を使ってくくってもいいのですが、それはまた、改めて紹介します。

いつものように、「 ’」以下に解説をつけておきます。これは入力しないようにしてください。入力する場合は、先頭に「 ’」(クォーテーション 数字の7のキー)をつけてください。

また、コードのセパレーター(カンマ)を”.”と赤字で表示していますが、実際は、半角のピリオド("る"のキー)です。間違わないように注意してください。(ブログの上では見づらいとのご意見から)

下のコードをVBAの”標準”に貼り付けるとすぐ動きます。
数値を変えながら変化を試してみましょう。

Sub ひな祭り()
On  Error  Resume  Next ’エラー発生の場合の処置
Do  While  True    ’ここからLOOPまでを繰り返します。
For  m = 1  To  10   ’ここからNEXTまでを10回繰り返します。
rd = Int(Rnd() * 10)   '乱数発生
ActiveSheet.Shapes("hana" & m).Select ’花びらを選択します。    
mr = 1
If  rd > 5  Then  mr = Not  mr   '方向変換の手法
If  Selection.ShapeRange.Left .
ShapeRange.Left = 400 ’花びらの位置が100より左へ来たら
Selection.ShapeRange.IncrementLeft  mr  ’花びらを左右に揺らす  ’
Selection.ShapeRange.IncrementTop rd  ’花びらを落下させる
Mytimer (0.01)   ’動きをゆっくりとするための時間調整
If  Selection.ShapeRange.Top > 200 Then Selection.ShapeRange.Top = 1  '下端に来たら上端へ
Next
Loop             
End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
’時間調整
Sub Mytimer(t)
Mytime = Timer
Do  Until  Timer > Mytime + t
DoEvents
Loop
End Sub

桃の花びらが舞い落ちるようになったでしょうか?

最後に、このアニメーション(花びらの落下)は無限に作動しますので、かならず終了ボタンを作成しておきます。

うえのマクロの下につぎのモジュールを入力してください。

’終了
Sub MyEnd
Range("A1").Select
End
End Sub

入力が終わったらボタンを作成します。

[表示]-[ツールバー]-[フォーム]から”ボタン”をクリックして、画面の適当な場所(右端など)をクリックして貼り付けます。

ダイヤログボックスで”MyEnd”をクリックします。
できたボタンの中を右クリックして”テキストの編集”で”終了”とします。

これでいつでもアニメーションを停止することができます。

ほかのアニメーションも同様ですが、パソコンでほかの作業をするときは停止させてください。

前回の移動を利用して、内裏様とお雛様とが左右から登場してくるように改良してみてください。雛まつりが楽しめますよ。

参考画面
http://yahoo.jp/box/2ezT4c


また、次回をお楽しみに・・・



エクセルアニメーション第10回(応用編2)アクロバット飛行

2008-12-29 | Weblog

今回は、回転を利用して”アクロバット飛行”をつくってみましょう。



使用する用語は、Rotation です。それと、前回の移動を組み合わせて画面の中でアクロバット飛行を楽しみましょう。

まず、材料を挿入します。


”図形描画”ツールバーの”楕円”を選択してB5セルからG26セルまでの円を描きます(Shiftキーを押しながらドラッグすると、真円がかけます。)
(ツールバーが出ていないときは、[表示]-[ツールバー]-[図形描画]をチェック)

つぎに、[挿入]-[図]-[クリップアート]から”飛行機”(下図参照)を検索して挿入してください。


下の図を参照して、挿入した飛行機の大きさ(小さくします)、位置(円の下端)を調整します。


挿入された飛行機は左を向いていますので、右向きに変えましょう。
飛行機を選択しておいて、図形描画ツールバーの”図形の調整”から”回転/反転”をクリックして”左右反転”をクリックします。飛行機の方向が右向きに変わります。

飛行機を選択した状態で、Shiftキーを押しながら円内でクリックします。飛行機と円が同時に選択されたこと(どちらにもハンドルが付いている)を確認して右クリックから[グループ化]-[グループ化]をクリックします。
これで、円と飛行機が一体となります。

引き続き円内を右クリックして”オブジェクトの書式設定”をクリックします。
ダイヤログボックス内の”色と線”タブをクリックしておいて、”塗りつぶしなし””線なし”に設定します。「OK」すると、円が消えて飛行機だけが残るようになります。



それでは、マクロを作成しましょう。

いったん飛行機(円も)以外のセルをクリックして選択を解除しておきます。

第1回に作成したマクロツールの中の”新しいマクロの記録”ボタンをクリックします。
マクロ名には、”アクロバット”と記入してマクロ操作を開始します。

まず、飛行機をクリックします。大きな四角にハンドルが付いたと思います。
上端にある緑の回転つまみをクリック(円が点線で表示されます)して左へ少しまわします。角度は適宜でいいです。

これで、”記録終了”ボタンを押します。

それでは、マクロの修正をしましょう。
マクロツールから、”Visual Basic Editor”ボタンをクリックします。(または、Alt+F11)
左のペーンの”標準モジュール”の”Module1”をダブルクリックします。

つぎのようなモジュールができていると思います。
もし、余分な行がついている場合は削除してください。

Sub アクロバット()
' アクロバット Macro
' マクロ記録日 : ユーザー名 :
ActiveSheet.Shapes("Group 3").Select
Selection.ShapeRange.IncrementRotation -13.3
End Sub

そのモジュールを、次のように修正しましょう。日本語の部分は必要ありません。
(書く場合は、”’”をつけないとエラーになります)

Sub アクロバット()
' アクロバット Macro
' マクロ記録日 : ユーザー名 :
ActiveSheet.Shapes("Group 3").Select '飛行機を選択
Selection.ShapeRange.Rotation = 0 '回転角度を0に設定
Selection.ShapeRange.left = 1 '画面左端に配置
For n = 1 To 720 '720回繰り返し
Selection.ShapeRange.IncrementRotation -1 '1度ずつ半時計周りに回転
  Selection.ShapeRange.IncrementLeft 0.3 '0.3ピクセルずつ右へ移動
DoEvents
Next
Cells(1, 1).Select 'A1セルを選択して終了
End Sub

では、最後に、前回と同じくマクロボタンを作成します。

[表示]-[ツールバー]-[フォーム]から、”ボタン”をクリックしてA1セルをクリックします。ボタンがつきましたか。

出てきたダイヤログボックスの”アクロバット”をクリックします。
そのままボタンの中をクリックして”ボタン1”を消して”開始”に変更しましょう。

おっと、忘れるところでした。
このマクロは、スタートするととめることができないので(できないことはないけど・・・)”停止”ボタンを作っておきましょう。
これは、マクロを直接書く場合に必要ですから覚えておきましょう。

まず、”Visual Vasic Editor”を開きます。(マクロツールバーの右端のボタン)


出てきた画面で[挿入]-[標準モジュール]をクリックして次のコードを記入します。

sub MyEnd
end

これで次のようになります。



Visual Basic Editor を終了してエクセル画面に戻ります。
ひきつづき、[表示]-[ツールバー]-[フォーム]から、”ボタン”をクリックしてからA3セルをクリックします。

出てきたダイヤログボックスの”MyEnd”をクリックします。
そのままボタンの中をクリックして”ボタン2”を消して”停止”に変更しましょう。
このボタンをクリックすることで、いつでも途中でとめることができます。

飛行機の回転速度は、オブジェクトの大きさ(と、パソコンの処理能力)に関係しますから、あまり大きな円にすると遅くなります。

”開始”ボタンをクリックするとアクロバットが始まります。



バックに手持ちの大空の写真などを挿入する(写真の中で右クリックして、[順序]-[最背面]に設定します)と迫力のあるアクロバット飛行が楽しめます。

公開ソフト
http://yahoo.jp/box/q10_m3


さて、次回は?  お楽しみに・・・


エクセルアニメーション第9回(応用編1)電車

2008-12-10 | Weblog

今回から、これまで紹介してきた基本マクロを使いながら、アニメーションの初歩を紹介していきます。
基本さえ覚えれば、あとはそれらを組み合わせて、自分のアイディアで楽しいアニメの世界が無限大に広がります。
わたしは、テレビのCM画面などをみて、これはどうすればつくるれるか、と、いつも考えているとアイディアが沸いてきます。そして、それにトライして少しずついろいろな場面を蓄積しております。
また、インターネット上にも使える素材がいっぱいありますから、ふだんから少しずつ取り込んでおくと(著作権に注意)便利です。

この応用編では、基本のモジュールを省略することがありますので、そのときは前回までのところを参考にしてトライしてください。

今回は、"電車の移動"をやってみましょう。




オブジェクト(動かすもの)は、電車です。
エクセル画面で[挿入]-[図]-[クリップアート]として、「電車」で検索してください。
インターネットに接続できない場合は、自分で絵を書くか、適当な写真を挿入してください。



(オブジェクトの名前の変更)
挿入ができたならば、”名前ボックス(エクセル画面の左上)”をクリックすると”Picture 1(または、図1)"が青色反転しますので、「電車」と入力しエンターして変更しておいてください。



電車の外のセルをクリックしてハンドル(周りの白い丸)をはずしておきます。

それではマクロを作成しましょう。

第2回の動作の基本(移動)を参照して、「新しいマクロの記録」ボタンをクリックします。


ダイヤログボックスで、”マクロ名”欄に「電車」と記入してOKします。
”電車”をクリックしてB列(1セル右)まで移動させます。それだけで”記録終了”ボタンをクリックします。


それでは、出来上がったモジュールを見てみましょう。

(モジュールの見方)
VBEボタンまたは、”Alt + F11” で、Visual Basic Editor を開きます。
左のペーンの”標準モジュール”の「+」をクリックして、”Module1”をダブルクリックするとモジュールが現れます。(”標準モジュール”がでていない場合は、「表示」メニューの「プロジェクトエクスプローラ」をクリックしてください。)

下のようになっていると思います。余分な行が記録されている場合は削除してください。(数値(50,95)は関係ありません) 

Sub 電車1()
'
' 電車 Macro ' マクロ記録日 : ユーザー名 :
'
ActiveSheet.Shapes("電車").Select
Selection.ShapeRange.IncrementLeft 50.95
End Sub

これでマクロが記録されました。このマクロを元に、あとは下記のように修正、加除していきましょう。

Sub 電車()
電車 Macro ' マクロ記録日 : ユーザー名 :
ActiveSheet.Shapes("電車").Select
Selection.ShapeRange.Left = 1
For n = 1 To 500
Selection.ShapeRange.IncrementLeft 1
DoEvents
Next
End Sub

同じようなコードは、コピー&ペーストを活用しましょう。

出来上がったら、エクセル画面に戻ってボタンをつくりましょう。

第7回(画面切り替え)を参照して”フォームツールバー”からボタンをクリックし、A15セルに貼り付け(クリック)します。
マクロの登録で「電車」を選んでクリックします。

これでひとまず完成です。

今作ったボタンをクリックしてみましょう。これで、電車が左から右方向へ移動します。

移動量は、マクロ内の "For n = 1 To 500" の数値(500)で決まります。この数値をを変更してみてください。大きくするとさらに右へ動きます。少なくすると、早く止まることになります。ためしてみましょう。

つづいて、右へ行った電車を元の位置へ戻してみましょう。   

For n = 1 To 500
Selection.ShapeRange.IncrementLeft 1
DoEvents
Next
  
の下(End Sub との間)に、つぎのモジュールを付け加えます。(上のコードをコピーして、一部修正します)よくみて、間違いのないようにしてください。

For n = 1 To 500
Selection.ShapeRange.IncrementLeft -1
DoEvents
Next

こんどは、右へ行った電車が、また、左の端に戻ってきたでしょう。

出来上がったら、クリップアートの”山”を検索して背景に挿入してみましょう。電車が消えたと思います。心配ありません。
山の画面内を右クリックして”順序”を”最背面”に設定します。

さきほど作成したボタンを右クリックして適当な場所へ移動させておきましょう。

これが完成図です。参考にしてください。



公開ソフト
http://yahoo.jp/box/Zr0w74

さて、次回は???


エクセルアニメーション第8回(動作の基本(画面反転とタイマー))

2008-10-20 | Weblog
今回は、オブジェクトの反転を紹介します。

アニメーションを方向変換させる場合に利用します。

今回は、オブジェクトにエクセル画面から呼び出せるクリップアートを利用します。(インターネットに接続する必要があります)

[挿入]-[図]-[クリップアート]として、右にでたペーンで検索ボックスに”飛行機”と入力して検索してみましょう。



インターネットに接続が困難な場合は、どんな写真でもいいのでエクセル画面に挿入してください。

挿入した飛行機(または、その他の写真)の外をクリックして選択をはずしておきます。

それでは、いつものようにマクロを作成していきましょう。

オブジェクトをクリックしておいて、図形描画ツールバーの”図形の調整”をクリックして、”回転/反転”の”左右反転”をクリックします。

  飛行機が反転したのを確認してください。


これで、”記録の終了”ボタンを押します。そして、Visual Basic Editorボタンをクリックして開きましょう。

下記のようなモジュールができたと思います。

Sub 反転()'
' 反転 Macro
' マクロ記録日 : ユーザー名 :
ActiveSheet.Shapes("Picture 1").Select
Selection.ShapeRange.Flip msoFlipHorizontal
End Sub

その他の行が記録されている場合は削除してください。
名前(Picture 1)が違っていても変更しないでください)

マクロボタンを作成して(前回参照)”反転”マクロを割り当ててください。

ボタンを押すと飛行機が右、左に向きを変えると思います。

Selection.ShapeRange.Flip msoFlipHorizontalの赤字部分を、Verticalに変えると、オブジェクトは上下方向に反転します。

ボタンとモジュールを追加してためしてみましょう。



つぎに、マクロの実行上必要になる”タイマー”を紹介します。
マクロはほとんどの場合、瞬時に実行されます。したがって、動作の速さを調整するのに使われるのがタイマーです。

タイマーにはいろいろな方法がありますが、もっとも簡単なものを作ってみましょう。
つぎのモジュールをコピーして、”標準モジュール”に貼り付けてください。
やり方は、”Visual Basic Editor” 画面を出して、[挿入]-[標準モジュール]で開いたところの一番下へ貼り付けます。
'------------------------------------------------------

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

'------------------------------------------------------
これで、”t”に数値を入れると、その時間だけこのマクロが繰り返し行われ、次の動作までの時間を調整するようになります。tの単位は秒です。

このマクロは、次回以降で使用することにします。
Bookが新しくなったときは、これをコピーして貼り付けましょう。

次回からは、応用編に入ります。




エクセルアニメーション第7回(動作の基本(画面切り替え))

2008-10-08 | Weblog
今回は、スライドショウのように画面を切り替える手法を紹介します。

画面の切り替えには、瞬間に変わる方法と、徐々に変わる方法とあります。
瞬間切り替えには、オブジェクトの順序の入れ替えを利用します。
徐々に切り替えるには、フェードアウトとフェードイン、ならびに画像の変更を併用します。

ここでは、基本を紹介するため、画像は2枚のみを使用します。画像の数が多くなってもほとんど同じことです。(オブジェクトの選択に一工夫が必要です)

それでは、今回はあたらしい Book(エクセル)を開きましょう。

[オートシェイプ]-[基本図形]で、”スマイル”をクリックしてから、セルのC5からF20までドラッグします。(Shiftキーを押しながらドラッグすると真円になります)名前ボックスには、”オートシェイプ 1”(または、Autoshape 1)となっていることを確認しておいてください。

貼り付けた”スマイル”を、Ctrlキーを押しながら右へドラッグ(コピー)して、”スマイル”を2個にします。2個目の”スマイル”は”オートシェイプ 2””(または、Autoshape 2)となっていることを確認しておいてください。

”オートシェイプ1”をクリックしておいて、”Ctrl+1”で"オートシェイプの書式設定”を出します。(これまで、右クリックして書式設定を出していましたが、今回からは”Ctrl+1(コントロールキーと数字の1を同時に押す)を使ってみましょう)

前回まで

 今回(Ctrl + 1)

塗りつぶしの色を”ベージュ”にして、OKします。

”スマイル”の顔がベージュに変わりましたか。

今度は、”オートシェイプ2”をクリックして同じ操作で色をローズにします。

この2枚の”スマイル”をドラッグしてぴったりと重ねて片方の”スマイル”が見えないようにします。(Altキーを押しながらひとつづつ動かすと、ぴったり重なります)
”スマイル”の範囲選択をはずしておきます。(周りにハンドルのついていない状態)

それでは、これからマクロを作成しましょう。

いつものように、”マクロの記録”ボタンを押します。
マクロの名前には”スライド1”と記入して「OK」しましょう。

見えている”スマイル”を右クリックします。



[順序]-[最前面へ移動]をクリックします。

これだけで”記録終了”ボタンを押します。

それでは記録されたマクロを見てみましょう。(見方は、前回までを参照してください)


右端のボタンを押して”Visual Basic Editor”を表示させます。

次のようになっていると思います。

Sub スライド1()
'
' スライド1 Macro
' マクロ記録日 :       ユーザー名 :
'
ActiveSheet.Shapes("AutoShape 1").Select
Selection.ShapeRange.ZOrder msoBringToFront
End Sub

これを、下記のように追加、修正します。
今回は追加が多いので注意して修正してください。”’”がついた行は記入する必要はありません。

内容の説明は簡単に見ておいてください。回をあらためて説明していきます。

Sub スライド1()
'
' スライド Macro
' マクロ記録日 :     ユーザー名 :
'
’変数名を宣言
Static ObName As String

’エラーが発生したときの処理
On Error Resume Next

’選択されたオブジェクトがどちらかを判定して切り替える

’前面のオブジェクト名を取得
ObName = Selection.ShapeRange.Name

’”スマイル 2”なら、1に切り替え
If ObName = "AutoShape 2" Then
ObName = "AutoShape 1"

’その他(”スマイル 1”)なら2に切り替え
  Else
  ObName = "AutoShape 2"
End If

’切り替えたオブジェクトを選択
ActiveSheet.Shapes(ObName).Select

'透明になっている場合は可視にする(通常はいりませんが、今回はフェードアウトと同じオブジェクトを使用しているため、透明を避けるために入れてあります)
Selection.ShapeRange.Fill.Transparency = 0
Selection.ShapeRange.Line.Transparency = 0

  ’選択したオブジェクトを最前面に表示
Selection.ShapeRange.ZOrder msoBringToFront

’A1セルを選択して終了
Range("A1").Select

End Sub

でき上がったら、コマンドボタンをつけましょう。

マクロボタンの作成

今回からは、マクロボタンを”フォーム”ツールバーの”ボタン”を使用して作成します。

[表示]-[ツールバー]-[フォーム]を表示します。



左から4番目の”ボタン”をクリックしておいて、”スマイル”の右のセルをクリックしてボタンを貼り付けます。さらに、できたボタンを右クリックして、”テキストの編集”でボタンの名前を”スライド1”とつけておきましょう。

”マクロの登録”画面が出るので、”スライド1”をクリックして「OK」します。



(これは、つぎの”スライド2”も完成したときの図です。)

これで完成です。”スライド1”ボタンをクリックして見ましょう。クリックするたびに”スマイル”の1と2が入れ替わると思います。



つぎに、オブジェクト画面が徐々に切り替わる方法を紹介します。

これは、第5回で紹介した”フェードアウト””フェードイン”を利用します。
まず、見えているオブジェクトをフェードアウトさせて消えたところで、画面を入れ替えて次の画面をフェードインで表示させます。
したがって、画面切り替えに今回の”スライド1”も応用します。

では早速マクロを組んでみましょう。

今回は、”新しいマクロの記録”は使用しません。直接、モジュールを入れていきます。


右端のボタンを押して”Visual Basic Editor”を表示させます。



[挿入]-[標準モジュール]をクリックしてエディター画面を表示させます。
そこへ、下のモジュールを貼り付けていきます。

'第5回、および、今回のマクロからから以下のモジュールを取り出して修正してください。(日本語の部分は要りません)
青地の部分は変更、赤字の部分は追加です。

練習のため、このまま貼り付けても動きます。さきに作ったモジュール”スライド1”の下に貼り付けてください。

  この画面の”End Sub”下に貼り付け


’ここからーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
’第5回から

Sub スライド2()
Static obName As String
On Error Resume Next
ActiveSheet.Shapes(obName).Select
Selection.ShapeRange.ZOrder msoBringToFront

For n = 0 To 1 Step 0.01
Selection.ShapeRange.Fill.Transparency = n
Selection.ShapeRange.Line.Transparency = n
DoEvents
Next

'今回の”スライド1”から

obName = Selection.ShapeRange.Name

If obName = "AutoShape 2" Then
obName = "AutoShape 1"

Else
obName = "AutoShape 1"
obName = "AutoShape 2"
End If

'第5回のマクロから

ActiveSheet.Shapes(obName).Select

For n = 1 To 0 Step -0.01
Selection.ShapeRange.Fill.Transparency = n
Selection.ShapeRange.Line.Transparency = n
DoEvents
Next

Cells(1, 1).Select

End Sub

’ここまでーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

これで完成です。上のマクロと同じく、”ボタン”を貼り付けて、”マクロの登録”で”スライド2”をクリックして登録してください。ボタンの名前も編集しておきましょう。

では、ボタンを押してためしてください。

スライド1では画面が瞬間的に変わります。
スライド2では画面が徐々に薄くなっていき、次のもう一枚の画面が徐々に現れてきます。

うまく行きましたか。

次回は、反転およびタイマーを紹介する予定です。










エクセルアニメーション第6回(動作の基本(消滅、出現ー3))

2008-09-23 | Weblog
今回は“消滅、出現―3”です。

今回は、縮小、拡大を利用して、消滅、出現をします。(厳密には消滅はしません)
これは、オブジェクトの大きさを変化させるのですが、回転と同じく、相対変化と絶対変化があります。

相対変化は、現在の大きさの何パーセントの大きさにするか(”1”より小さければ小さくなり、大きければ大きくなります)で決めます。

絶対変化は、大きさをピクセルで指定します。”0”で最小。最大は無限大(実際はメモリに依存))です。

これらは、アニメーションの内容によって使い分けします。

それでは、前回のエクセルを開きましょう。
“スマイル”の外のセルをクリックして、ハンドルをはずしておきます。

つづいて、マクロの作成に入ります。

マクロの記録ボタン (左端)を押して、



マクロ名に「縮小」と入力して「OK」します。



ここからマクロの記録です。

“スマイル”をクリックしてハンドル(周りの小さな白い丸)をつけます。

つづいて、右上のハンドル(白い丸)をクリックしながら左下へドラッグして”スマイル”を小さくします。大きさは適当でいいです。

“記録終了”ボタン(左端(形は四角に変わっています)を押します。

または

つづいて右端の”Visual Basic Editor”ボタンを押して(または、Alt+F11)、エディタを表示させます。

できあがったモジュールはこのようになっていると思います。

Sub 縮小()
'
' 縮小 Macro
' マクロ記録日 :         ユーザー名

ActiveSheet.Shapes("AutoShape 1").Select

Selection.ShapeRange.ScaleWidth 0.15, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.15, msoFalse, msoScaleFromBottomRight

End Sub

これだと、いっきに縮小されるので、少しづつ変化するように赤字の部分を修正します。
(回転のときと同じです)

Sub 縮小()
'
' 縮小 Macro
' マクロ記録日 :         ユーザー名

ActiveSheet.Shapes("AutoShape 1").Select

’初期値(”スマイル”を画面の左上端、直径300ピクセルの大きさに設定します。)

  Selection.ShapeRange.Left=0
  Selection.ShapeRange.Top=0
  Selection.ShapeRange.Width = 300
  Selection.ShapeRange.Height = 300

’ここまでが、初期位置の設定です。

For n = 1 To 100 ’縮小を100回繰り返す

Selection.ShapeRange.ScaleWidth 0.95, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.95, msoFalse, msoScaleFromBottomRight

DoEvents
Next
End Sub

  これでオブジェクトは小さくなってほとんど見えなくなると思います。
  (ただし、パソコンによって大きさが異なる場合がありますから、そのときは”繰り返し回数”を調整してください)


今度は、絶対変化を利用して、いま、小さくした”スマイル”を”拡大”するマクロを作成します。

上のモジュールをコピーして貼り付けます。

これを、下のように赤字部分を修正してください。

Sub 拡大()
'
' 拡大 Macro
' マクロ記録日 :         ユーザー名

ActiveSheet.Shapes("AutoShape 1").Select

Selection.ShapeRange.Left=0
Selection.ShapeRange.Top=0

For n = 1 To 300
Selection.ShapeRange.Width = n
Selection.ShapeRange.Height = n
DoEvents
Next
Cells(1, 1).Select
End Sub

これで、完成です。

[表示]-[ツールバー]-[フォーム]から、ボタンをクリックしてから適当な位置をクリックしてボタンを貼り付けてましょう。
出てきたダイアログボックスのなかの「縮小」をクリックします。
おなじくもう1個ボタンを貼り付けて、「拡大」をクリックします。

これで、“縮小”ボタンを押すと“スマイル”が小さくなり(ほとんど見えなくなります)、“拡大”ボタンを押すと拡大されて見えるようになります。
うまくできましたか?


ここで、これまでいただいた質問中から、ひとつだいじな項目を紹介しておきます。

「”スマイル”がぜんぜん動かない」と言う問い合わせです。
見せていただくと、マクロは正しくても、”オブジェクト名”が違っているケースが一番多いようです。

このシリーズで紹介しているマクロの中では、オブジェクト(”スマイル”)名は、"AutoShape 1"となっています。ただし、”スマイル”を、新しく作ったり、コピーした場合は名前が変わってきます(番号が増えてきます)。
オブジェクト名は、オブジェクトをクリックすると、エクセル画面の左上にある”名前ボックス”に表示されます。それが、"AutoShape 1"以外の場合は、その名前("AutoShape 2"とか、オートシェイプ 3 など)をコピー(Ctrl+C)してモジュールの該当部分(ActiveSheet.Shapes("AutoShape 1").Select)に貼り付ける(Ctrl+V)か、書き換えてください。これが正しくないと動きません。動かない方は、もういちど確認してください。
どうしてもうまく行かない場合は、新しくBookを開いて作成していただくといいでしょう。

次回は、画像切り替え(スライド)を紹介する予定です。




エクセルアニメーション第5回(動作の基本(消滅、出現ー2))

2008-09-13 | Weblog
前回に引き続き基本動作のコードを紹介します。

今回は、消滅(フェードアウト)、出現(フェードイン)です。
フェードアウトは、オブジェクトの透明度を増していって見えなくする方法です。

それでは、いつものようにマクロを作成していきましょう。

いったん、”スマイル”の外部をクリックして、まわりのハンドル(白いちいさな丸)をはずしておきます。

”マクロの記録”ボタン(左端)をクリックしてください。



“マクロの記録”ダイヤログボックスのマクロ名欄に“フェードアウト”と入力して「OK」します。



これからマクロの記録の開始です。

“スマイル”を右クリックして、オートシェイプの書式設定をクリックします。



オートシェイプの書式設定ダイヤログボックスで、“色と線”タブの“塗りつぶし”の透明のスライダーを一番右まで移動させます。上の色が、ベージュから白(透明)に変わります。



「OK」して、”マクロの記録終了”ボタンをクリックします。

Sub フェードアウト()
' フェードアウト Macro
' マクロ記録日 : ユーザー名 :

ActiveSheet.Shapes("AutoShape 1").Select
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 47
Selection.ShapeRange.Fill.Transparency = 1#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoFalse
End Sub
上のようなマクロができたと思います。しかし、必要なコードは赤字の行だけです。
ほかの行は削除してください。

残ったのは次のとおりです。

Sub フェードアウト()

ActiveSheet.Shapes("AutoShape 1").Select

Selection.ShapeRange.Fill.Transparency = 1#
Selection.ShapeRange.Line.Transparency = 0#

End Sub

これを次のように、追加、修正してください。

Sub フェードアウト()

ActiveSheet.Shapes("AutoShape 1").Select

For n = 0 To 1 Step 0.01
Selection.ShapeRange.Fill.Transparency = n
Selection.ShapeRange.Line.Transparency = n
DoEvents
Next

Cells(1,1).Select

End Sub

‘見えないままでは困るので、再度見えるように(フェードイン)も作成しておきます。

コードは、上のものをコピーして、赤字の部分だけ修正します。

Sub フェードイン()

ActiveSheet.Shapes("AutoShape 1").Select

For n = 1 To 0 Step -0.01
Selection.ShapeRange.Fill.Transparency = n
Selection.ShapeRange.Line.Transparency = n
DoEvents
Next

Cells(1,1).Select

End Sub

これでマクロは出来上がったので、マクロボタンをつけましょう。

今回も2個作成します。(第3回を参照)
"フェードアウト"と"フェードイン"の名前をつけてマクロを登録してください。

”フェードアウト”ボタンをクリックすると、スマイルが次第に消えていくとおもいます。つづいて、フェードインボタンをおしておいてください。また見えてきましたか?

今回は以上です。次回は、拡大、縮小を紹介する予定です。