アニメーションの基本コード
アニメーションの動きをするオブジェクト(写真、図、オートシェイプなど、以下オブジェクト)を動かすマクロの基本となるコードを紹介します。
今回は“移動”です。
はじめに、アニメーションにつかうオブジェクトを挿入します。
今回は、”図形の調整”バーの”オートシェイプ”をクリックして、”基本図形”の中から”スマイル”をクリックします。
画面のセル”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回繰り返す
・・・・・
・・・・・
今回は、左右、上下の移動を紹介しました。
次回は、回転を紹介する予定です。
アニメーションの動きをするオブジェクト(写真、図、オートシェイプなど、以下オブジェクト)を動かすマクロの基本となるコードを紹介します。
今回は“移動”です。
はじめに、アニメーションにつかうオブジェクトを挿入します。
今回は、”図形の調整”バーの”オートシェイプ”をクリックして、”基本図形”の中から”スマイル”をクリックします。
画面のセル”A1”をクリックしてそのままドラッグして適当な大きさに貼り付けましょう。

オブジェクトを動かす場合は、かならずオブジェクト名を指定しておく必要があります。(英語、日本語、どちらでも同じです)
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回繰り返す
・・・・・
・・・・・
今回は、左右、上下の移動を紹介しました。
次回は、回転を紹介する予定です。