セルをドットみたいに動かして遊んでみた【Excel VBA】

2015年8月27日

f_f_business_30_s128_f_business_30_2bg

最近Excelを使うことが多くて、データを分類したり加工したりするマクロを作ったり、久しぶりにVisual Basicでプログラムを書きました。でもずっと方眼紙のようなマス目を見ていると、ファミコンのような昔のゲームを思い出します。

というわけで、今回はエクセルのセルを使って壁に跳ね返るボールのような動きを作ってみました。

動作環境

  • Microsoft Office 365 Soloを使用しています。
  • WindowsでもMacでも動きますが、Mac版の方はなぜかマクロが実行できないことがありましたのでWindows版の方が安定しているようです。

レイアウト

post-1162_01使うシートは1つだけです。名前は自動で付いている「Sheet1」のままで変更しなくて大丈夫です。

A1のセルからAF22のあたりまで、セルの色を黒く塗って壁を作ります。あとはマクロの実行用に図形を一つ作っておいてください。

 

マクロの作成

レイアウトの作成が終わったら、マクロを作成します。メニューの「ツール」-「マクロ」-「Visual Basic Editor」でマクロ編集画面を開いて、モジュールを作成します。

※作成方法がわからない場合は、「ツール」-「マクロ」-「新しいマクロを記録」を選んですぐに「ツール」-「マクロ」-「記録終了」を選ぶとサクっと作れます。

簡単に説明しますと、まずcheckCollisionという関数で、ボールが動く先に障害物があるかチェックしています。もし壁やカーソルがあれば移動する方向を反転するようにしています。

 

マクロをボタンに割り当て

post-1162_02ここまでできたら、最初に作成した図形にマクロを登録して完了です。図形をcontrolキーを押しながらクリック、または右クリックでメニューを開き、「マクロの登録」を選択して「dotmove」を設定します。

 

 

 

実行してみましょう

post-1162_03では図形をクリックして実行してみましょう。青いドットが動き回ります。機種やOSによって実行スピードが違うので、速すぎる場合はcounterの値を大きめにして調整してみてください。

壁やカーソルに当たるとはね返ります。黒でセルを塗りつぶしたり、十字キーでカーソルを追いかけてみたりできます。

 

おわりに

全く何かに役だつことはないですが、重要な情報が入ったセルに色を付けるマクロを作ってるうちに試してみたくなって、軽い気持ちで作ってみました。移動エリアを広くして障害物になる壁をたくさん配置して、一番移動量の少ない人が勝ち!みたいな遊び方ができるんじゃないかなと思います。

プログラムなんてそんなに難しく考えないで、楽しんで適当に作ってみるのも面白いですよ。