これまでの過去記事で、Excel VBAのプログラムを作成する2つの方法について何度か触れてきました。この記事では、その解説をまとめると同時に、VBAのプログラムを直接記述する作成方法についてまと … ExcelマクロVBAでオセロ(リバーシ)を作っていきながらマクロVBAを学ぶ第5回です。前回で石を置ける場所の判定が完成しましたので、これからは、ゲームとしての機能を一つずつ追加していきます。まずは、石を置ける場所の色を変更してわかりやすくしてみます。 【ExcelVBA】ヘビゲームを作ってみました。 に続いて、 新人のころにExcelVBAで作ったテトリスを公開してみようと思います。ソースコードも公開していますので、ExcelVBAを勉強している方へ参考にな … 前からつくってみたいなあと思っていたゲームの一つで、これもなかなか時間がかかりました。, 仕事終わってからだらだら作っていたら一週間くらいかかりました(工数はだいたい1人日~2人日くらい)。, ですが、思ったより簡単に作れました。エクセルで過去にオセロや将棋などつくりましたが、, この記事では、作成したテトリスについて、その操作方法と作成方法についてご紹介します。, ※ 作成方法したエクセルのテトリスについては下記からダウンロード可能ですので、ぜひ遊んでみてください。, テトリスを開始するときは「START」ボタンをクリックしますが、ゲームを終了する場合はキーボードの「Home」キーを押下します。, またテトリスには、一行ずつ消すよりもまとめて消したほうがお得というルールがありますね。今回それを下記式で表しています。, テトリスを作った割にテトリスのポイントのつけ方がよくわからなかったので、こんな感じで付けました。, Score とは点数のことで、「Score = Score + ~ 」とは、もともとの Score の値にどんどん足していきますよということです。, 例えば削除した行が1行なら Score = 400点、2行なら700点つきます(答えを知っている人は教えてほしいです)。, 前述しましたがゲームを終了する場合はキーボードの「Home」キーを押下しますが、それ以外にもテトリスが続行できない場合も終了するようにしています。, 実際のテトリスの作成手順は下記の5つになります。この5つができればテトリスは作れます。, これだけみれば、「案外簡単そうだなあ」と思われる人もいるかもしれませんが、案外めんどくさいです。, 処理概要を説明しますと、まず定数、変数の定義とレイアウト作成などの下準備を行います。, その後 Do While True ~ をつかって無限ループさせ、ブロックを落とすようにします。, ブロックが指定したセルの行よりあれば終了するようにしています(先ほど貼ったやつです)。, 記事作成での都合上、最初に定数と変数の定義を最初にきていますが、プログラミングをしている段階では、必要なたびにどんどん定義しています(当たり前ですが、)。, 定数については、レイアウトの位置情報(何行何列目のセルに描くか)とブロックの色について定義づけしています(固定なので)。, また、変数については、ブロックの先頭セルと、テトリスのスコア、ブロックの回転数について定義しています。これらは後で説明しますのでいまは適当に流していただいて問題ありません。, これはもし間違えてシート上のセルを消してしまった場合も問題ないようにするためです。, 作成するレイアウトは、下記画像の青矢印の箇所(テトリスの周りのブロックと、次のテトリスを表示させる黒枠の箇所)です。, また、もともとブロックが描いてある場合もいったん消してきれいにするようにしています。, 下記はソースコードですが、setting プロシージャがメイン関数で、その中に ①テトリスの周りのブロックと、②次のテトリスを表示させる黒枠の箇所のレイアウトの設定を行っています。, 今回これらのブロックに名前をつけています。左から1、2 .... 7という数値をつけそれを Block という変数にもたせるようにしています。, また、セルに入れる処理を毎回書くのが面倒だったので、paintColor プロシージャにまとめ、座標情報(何行何列目に入力するか)のみで描けるようにしてあります。, 具体的には 1 ~ 7 のうちのランダムな数値を取得し、取得した値からブロックを生成するようにします。, 「←」「↑」「↓」「→」のキーボード入力のイベントを検知したときに、下記プロシージャが呼び出されるようにしてあります。, ブロックの移動についてですが、移動前のブロックの書式を削除→次のブロックに色をつけるというふたつの処理を行っています。, 前章「ブロックを描く」で説明しました、「ブロックを描く」処理と「ブロックを削除」処理の二つを呼び出して処理させています。, 当然ですがブロックが壁を貫いたり、底を突き抜けて動いていたらテトリスになりません。, ですので今回はブロックごとに先頭セルをもたせてあり、先頭セルの次の行ももしくは列のセルの色が白色(背景色)でならブロックが移動できるようにしています。, つぎにブロックの回転ですが(これ結構悩んだんですが)一番早いのがブロックごとにパターンをつくってセルに描くことです。, その「Ctrl」キーの入力イベントを検知した後、「Ctrl」キーが押された回数を変数 ROTATE_NUM にもたせます。, 例えば「Ctrl」キーが2回入力されれば ROTATE_NUM = 2となります。そして、ブロック名が「2」で ROTATE_NUM = 2 なら「こう描く!」と決めておきます。, あとは上記表の組み合わせをガリガリ書くだけです(これが書き間違えなどあって大変でしたね、、、)。, ブロックの移動が完了すれば次は、ブロックが一行そろっているか確認し、そろっている場合はその行を削除してスコアに加算します。, あとは終了条件だけですね。ある行を天井と決め、その行よりも一つ上の行を端から端までセルの書式を確認し、ブロックがあれば(セルに色がついてあれば)メッセージを表示させ終了させます。, 長々と失礼しました。この記事49000文字近くまでいってました、、、まあ大半がソースコードですが。, これ思ったより作るのめんどくさかったですね。。けれどゲームをつくるのってやっぱり楽しいです。, 最後にこのテトリスが気になる人もしくは作成したテトリスを参考にしたい人がいれば、ぜひダウンロードしてみてください!.

Excel vba で作成しています。要はプログラミングして作成しました。 実際のテトリスの作成手順は下記の5つになります。 この5つができればテトリスは作れます。 Excelを表計算ソフトだと思っているみなさんこんにちは。何度でも言います。Excelは表計算ソフトです。以前、当ブログでExcelアートについてご紹介させていただきましたが、今回は、Excelで作られたゲームをご紹介したいと思います。全部 このときは強制的にテトリスが終了します。 作成方法 .

5.「Alt」+「F8」で「Main」を実行する。 6.ゲームが起動します。 ※もう1度遊びたいときは「Alt」+「F8」で「Main」を実行するとゲーム再スタートです。

テトリスやその他の落ち物ゲームの基本的な考え方が分かる程度のものとお考え下さい。 この“かなり割り切った”データ構成の「制約」を除外しようと思うとかなり大変なことになりそうです。 Excel方眼紙という言葉があります。 それはそれは有名かつ悪名高きもので、かの日経ウーマンでも特集を組まれたことがあるほどです。 美文書作りには「方眼紙」シートを使う しかし、そもそもExcel方眼紙とは一体なんなのでしょう? Exce... プレゼンテーションで使うツールはPowerPointとプロジェクターだけではありません。 聴衆をアッと言わせられるようなプレゼンテーションデバイスを紹介します。 g-speak みなさんは、マイノリティ レポートという映画をご存知でしょうか... 『就活のためにボランティアをしなくては...』 そんな声をよく聞きます。 また、就職活動のアピール欄に『ボランティアを通じて得た体験が...』というエピソードを書く人も多いですよね。 そんなの全くアピールポイントになりません! もちろんボラ... パワポで資料を作るときに大切なことは、凝ったデザインでも、目を見張るような色使いでもなく、伝えるべき内容がきちんと相手に伝わるかどうかです。 凝ったデザインにする必要はなくても、数字のデータがものすごく見づらかったり、テキストの端がガタガタ... 旧職での数年前の話になります。 見積り・要件定義から詳細設計書、定常の進捗報告書、果てはデータコンバート用マクロまで全てExcelファイルで送りつけてくる、雑というか豪快なSIer窓口の方がおられました。 ウン100万円のDBサーバー構築う... なんでもExcelさんってご存知でしょうか? Excelを使い倒すあまり、あらゆるファイルをExcelで管理しようとする人のことです。 画像ファイルもExcelで共有! 仕事でExcelを使いまくるあまり、本来の表計算ソフトとしての役割以... FacebookやTwitterなどSNSの企業アカウントの運用にオススメの本5選. VBAコード(プログラム)の記述と実行の手順:Excel VBA入門 質問を受けた際、VBAコードを回答することがあります。 このページでは標準モジュールにVBAコード(プログラム)を登録して実行する手順の一例を書いてみます。