エクセルアニメーション

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

エクセルアニメーション第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回を参照)
"フェードアウト"と"フェードイン"の名前をつけてマクロを登録してください。

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

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

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

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

今回は“消滅、出現”です。

はじめに、準備として“スマイル”の書式を変更しておきましょう。

エクセルを開きます。

“スマイル”をドラッグして画面中央に表示させておきます。

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

オートシェイプの書式設定ダイヤログボックスで、
“塗りつぶし”を“ベージュ”にして「OK」します。


このようになりましたか?

オブジェクトの消滅、出現には、次のような方法があります。
1.非可視(見えない)、可視(見える)状態にする方法
2.次第に薄くして(フェードアウト)消滅、次第に濃くして出現(フェードイン)する方法
3.画像を縮小する、拡大する方法
などがあります。

これらの手法は、アニメーションの場面に応じて使い分けする必要があります。
また、これらを組み合わせて使うこともできます。

今回は、1の方法を紹介します。
コードは次のとおりです。

Selection.ShapeRange.Visible = False・・・非可視
Selection.ShapeRange.Visible = True・・・可視

2の方法、3の方法は順次紹介していきます。

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

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

“マクロの記録”をクリックします。
今回は、マクロ名欄に“消滅”と入力して「OK」します。



これからマクロの記録の開始です。
“スマイル”をクリックして、ハンドルがついたのを確認して、記録の終了ボタンをクリックします。
これで、マクロの記録は終了です。



の右端の”Visual Basic Editor”ボタンを押して(または、Alt+F11)、エディタを表示させます。
もし、灰色の画面だけが出た場合は、左のペーンの”標準モジュール”の左の”+”をクリックして、下に出た”Module1"をダブルクリックします。

<ahref="http://">

下のようになったと思います。余分な行ができた場合は削除してください。

Sub 消滅()
'
' 消滅 Macro
' マクロ記録日 : ユーザー名 :
'
ActiveSheet.Shapes("AutoShape 1").Select

End Sub

上のモジュール内の赤字部分を、つぎのように修正してください。

ActiveSheet.Shapes("AutoShape 1").Visible = False

完成

Sub 消滅()
'
' 消滅 Macro
' マクロ記録日 : ユーザー名 :
'
ActiveSheet.Shapes("AutoShape 1").Visible = False

End Sub

このようになります。

これと同時に、出現のモジュールも作成しておきます。
これは、上のモジュールで消滅したオブジェクトをふたたび出現させるものです。
(上のモジュールをコピーしてその下に貼り付け、赤字部分を修正します。)

Sub 出現()
'
' 出現 Macro
' マクロ記録日 : ユーザー名 :
'
ActiveSheet.Shapes("AutoShape 1").Visible = True
End Sub

つぎに、マクロボタンを2個作成して(前回を参照)、1個は「消滅」、あと1個は「出現」としてマクロの割り当てをします。

これで、“スマイル”が、消えたり、見えたりするでしょう。最後はかならず”出現”にしておいてください。次回、見えなくなってしまいます。(笑)

今回は以上です。次回は、フェードイン、フェードアウトを紹介する予定です。

エクセルアニメーション第3回(動作の基本(回転))

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

今回は“回転”です。

オブジェクトを時計回り、または、反時計回りに回転させます。コードは次のとおりです。

回転:

相対角度

時計回り
Selection.ShapeRange.IncrementRotation 1

反時計回り
  Selection.ShapeRange.IncrementRotation -1

絶対角度
Selection.ShapeRange.Rotation = 45


では、先回と同じくエクセルを開き、“スマイル”をドラッグして画面中央に作成しましょう。
いったん外のセルをクリックしてハンドル(まわりの白○)をはずしてから、”マクロの記録”ボタンを押します。

“マクロの記録”ダイヤログボックスログで、マクロ名欄に“回転”と入力して「OK」します。



“スマイル”をクリックすると、頭の方に青いマーク(回転用)がつくので、それを右へ約45度傾けます。

“記録の終了”ボタンを押します。Visual Basic Editorで見てみましょう。
下のようになっていると思います。

Sub 回転()
'
' 回転 Macro
' マクロ記録日 : ユーザー名 :
'
ActiveSheet.Shapes("AutoShape 1").Select
Selection.ShapeRange.IncrementRotation 48.11(数値は違っていてもかまいません)

End Sub

これが記録されたマクロです。これを、前回同様に修正していきます。
各コードのうしろの”’”または、”・・・”以下は入力しません。

Sub 回転() '・・・マクロの開始(名前)

ActiveSheet.Shapes("AutoShape 1").Select    '・・・オブジェクトを選択(名前)

For n = 1 To 180    '・・・180回繰り返す

Selection.ShapeRange.IncrementRotation 1   ・・・1度ずつ時計回りに回ります(-1とすると、反時計回りに回ります)

DoEvents '・・・※1

Next    '・・・ここまで繰り返す

End Sub    '・・・マクロの終了


これで完成ですが、これまで”Ctrl+q”などで動かしていたのを、今回からは、画面にコマンドボタンを配置して動作させるようにします。(そのために、先ほどのマクロに“回転”と言う名前をつけておきました。)

それでは、コマンドボタンを作成しましょう。いまのVisual Basic Editorを右上の”×”で閉じてエクセル画面に切り替えます。

[表示]-[ツールバー]-[フォーム]をクリックして、下図のフォームツールバーを表示させます。
(ツールバーは、縦になっていても同じです)


ツールバーの“ボタン”をクリックしてから、“スマイル”の下のセル(適当な場所)をクリックするとコマンドボタンが表示されると同時に”マクロの登録”ダイヤログボックスが出ます。



リストの中の”回転”をクリックして「OK」します。

では、今作ったコマンドボタンをクリックしてみましょう。
スマイル君が回転しましたか。180度回転して止まると思います。

先ほどのモジュールコードの下の部分を360に変更するとちょうど1回転します。
For n = 1 To  360

また、下のモジュールの部分の”1”のところを”-1”に替えると、反時計方向へ回転します。
Selection.ShapeRange.IncrementRotation -1

いろいろとためしてみましょう。

前回と同じく、初期位置としてスマイルの角度を正位置にしておくには、”絶対角度”のコードを入れます。

入れる場所は、繰り返し(For n=1 to 180)の前の行です。間違うと、回転しなくなってしまいます(笑)

回転させる前に初期位置(例:0度)にセットする場合などに使用します。(回転させたオブジェクトを元の角度に戻すとき)

完成

Sub 回転()

ActiveSheet.Shapes("AutoShape 1").Select

Selection.ShapeRange.Rotation = 0    ’・・・正位置(0度)にセット

For n = 1 To 180    '・・・180回繰り返す

Selection.ShapeRange.IncrementRotation 1     ・・・1度ずつ回転させます

DoEvents

Next

次回は、消滅、出現を紹介する予定です。