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

エクセルアニメーション

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

エクセルアニメーション第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

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

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

2007-12-01 | Weblog
アニメーションの基本コード

アニメーションの動きをするオブジェクト(写真、図、オートシェイプなど、以下オブジェクト)を動かすマクロの基本となるコードを紹介します。

今回は“移動”です。

はじめに、アニメーションにつかうオブジェクトを挿入します。
今回は、”図形の調整”バーの”オートシェイプ”をクリックして、”基本図形”の中から”スマイル”をクリックします。
画面のセル”A1”をクリックしてそのままドラッグして適当な大きさに貼り付けましょう。

  図1

オブジェクトを動かす場合は、かならずオブジェクト名を指定しておく必要があります。(英語、日本語、どちらでも同じです)
ActiveSheet.Shapes("AutoShape 1").Select

オブジェクトの選択:(赤字の部分がオブジェクトの名前です)
オブジェクトの名前は、エクセル画面の名前ボックスで確認できます。

移動;

水平方向

相対位置
右方向へ
Selection.ShapeRange.IncrementLeft 1
左方向へ
Selection.ShapeRange.IncrementLeft -1
絶対位置
Selection.ShapeRange.Left = 100

垂直方向

相対位置
上方向へ
Selection.ShapeRange.IncrementTop -1
下方向へ
Selection.ShapeRange.IncrementTop 1
絶対位置
Selection.ShapeRange.Top = 100

では、さっそく今回紹介したコードを使ってみましょう。 と言っても、コードをすべて打ち込む必要はありません。エクセルが自動で記録してくれますので、動かす手順だけ動作で示します。

先ほど挿入した”スマイル”の外のセルをクリックしてハンドル(選択)をはずしておきます。

本講座の第1回で作成した”マクロツール”の中の”マクロの記録”ボタンを押します。





”マクロの記録”ダイヤログボックスの”ショートカットキー”に「q」(かならず半角)を入力して「OK」します。

”記録終了”ボタンがあらわれるとともに、”マクロの記録”ボタンが”記録終了”ボタンに変わります。

記録終了ボタン

これ以後はマウスのクリックなどはすべて記録されてしまうので注意しましょう。

先に挿入した“スマイル”のオートシェイプをクリックします。このとき図の周りにハンドル(白い○)がついたことを確認して、いったんマウスボタンをはなしてから、もう一度クリックしてその図を約5センチ右へ移動させます。

”記録終了”ボタン(かならず四角の部分。”×”ではありません)をクリックします。


これで、マクロの記録は終了です。



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

もし真っ黒な画面になって表示されないときは、下記ツールバーの”プロジェクトエクスプローラ”ボタンをクリックしてください。



さらに、左のペーンの”標準モジュール”の左の「+」を押して”Module1”をダブルクリックします。



下のようなモジュールが作成されたと思います。

Sub Macro1()
' Macro1 Macro
' マクロ記録日 : ユーザー名 :
' Keyboard Shortcut: Ctrl+q

ActiveSheet.Shapes("AutoShape 1").Select
Selection.ShapeRange.IncrementLeft 69.23  ・・・(数字は無視してください)

End Sub
    

このモジュールを、下のように編集してください。(”・・・”以下の部分はいりません)
マクロ名の”Macro1”を”移動”に変更します。また、余分なコード(行)がある場合は削除してください。

コード内の用語間には”半角スペース”や、ピリオド(”る”のキー)がありますから注意してください。
挿入した場合に赤字に変換された場合はつづりなどが間違っていますから修正しましょう。

Sub 移動( )

ActiveSheet.Shapes("AutoShape 1").Select   ・・・オブジェクトを選択(名前)
For n = 1 to 100    ・・・100回繰り返す
Selection.ShapeRange.IncrementLeft 1   ・・・1ピクセルずつ右へ移動
Doevents   ・・・制御を開放
Next   ・・・ここまで繰り返す

End sub   ・・・マクロの終了

それでは、エクセル画面(スマイルが出ている画面)に戻って”Ctrl+q”([Ctrl]キーを押しながら[q]をクリック)で動かしてみましょう。うまく右方向へ動きましたか。

動いたならば、赤字部分を、他のコードと入れ替えて見ましょう。それぞれの動きをします。

たとえば、Selection.ShapeRange.IncrementTop 1 と入れ替えると、オブジェクトは下へ移動します。

また、数値”1”を、マイナス”-1”にすると、反対の方向へ動きます。

いろいろと組み合わせると、面白い動きをします。ためしてください。

つぎに、このままではオブジェクトはだんだん移動していってしまいますから、元の位置へ帰すように初期位置を指定しておきます。
今回は、左から100ピクセルのところに配置することにしましょう。
この場合は、絶対位置指定をします。

左右の位置指定
Selection.ShapeRange.Left = 100 を挿入すると、左から100ピクセルのところに配置されます。

上下の位置指定
Selection.ShapeRange.Top = 100 を挿入すると、上から100ピクセルのところに配置されます。

先に作成したコードをコピーして、一部を修正するといいでしょう。
例:Selection.ShapeRange.Incrementleft 1 → Selection.ShapeRange.left= 100 

挿入する場所は、

ActiveSheet.Shapes("AutoShape 1").Select
← ここに挿入します
For n = 1 to 100・・・100回繰り返す
・・・・・
・・・・・


今回は、左右、上下の移動を紹介しました。

次回は、回転を紹介する予定です。

エクセルアニメーション第1回(マクロ準備編)

2007-11-06 | Weblog


エクセルには、VBAというアプリケーションの機能拡張を施すためのソフトが用意されています。これはマクロ言語として開発されたプログラミング言語であり、マクロとは、特定の操作手順をプログラムとして記述して自動化する機能です。このプログラムの記述に使う言語をマクロ言語といいます。(以下「マクロ」と言います)

通常は、この機能を使って、くり返し実施するような作業をさせたり、日時を決めて自動的に作業(計算や表示)をさせたりするのですが、これを応用してアニメーションを動かす遊びを紹介するのがこのブログの目的です。

アイディア次第でかなりのものまで作れますので、基本を覚えて挑戦してみましょう。
マクロの準備
第1回目は、「マクロ」作成作業の準備から入ります。

まず、[表示]-[ツールバー]-[Visual Basic]をクリックしてマクロで使用するツールバーを表示させます。



そのなかの、一番右のボタンはここでは使用しませんので、Altキーを押しながらボタンをツールバーの外へ出しましょう。×がついたところで離すと削除されます。

つぎに、中央の”セキュリティ”ボタンを押すと”セキュリティレベル”の設定画面が出ますので、「中」または「低」に設定しましょう。「最高」または「高」のままでは、これから作成するマクロを実行することはできません。(ただし、セキュリティの面から、通常は「中」以上に設定しておきましょう。)

このボタンは、あとから追加したり、削除したりすることができます。

このツールバーは、次のようにして作成することもできます。こんご、マクロを作成していく段階でほかのボタンも追加することがありますので、要領をおぼえておきましょう。

まず、エクセル画面に専用ツールバーを作成して、その中に使用するツールボタンを設定します。

[ツール]メニューから[ユーザー設定]をクリックします。

[ツールバー]タブで[新規作成]をクリックして、ツールバー名に「マクロツール」といれて「OK」します。



できあがったツールバーを、エクセルの標準ツールバーのうしろへドラッグしてつけましょう。ゆっくりと持っていってください。

ひきつづきボタンを入れていきます。入れるボタンは次のものです。
新しいマクロの記録
マクロの実行
Visual Basic Editor

「コマンド」タブで”分類”の「ツール」、”コマンド”の中からボタンをドラッグしてツールバーの中へ持って行きます。ツールバーの中で「I」マークが付いたらドロップします。ちょっとコツがいります。失敗したらやり直しましょう。



出来上がり図("マクロツール"ツールバー)



つづいて、Visual Basic EditorボタンをクリックしてVisual Basic Editor 画面を表示します。
「表示」メニューの「編集」ツールバーをチェックしておきましょう。

このなかにある“コメントブロック”のOn、Offや、ブレークポイントボタンをマクロ編集時に使用します。

今、開いたVBE画面をいったん閉じて、エクセル画面に戻りましょう。

これで、準備ができたので、次回からいよいよアニメーションを動かしてみましょう。