この記事は 『Excelでリバーシを作ろう!! マクロ、VBAを1から学ぶ』 のサンプルです。
前:【三目並べ:1. 仕様を考える/画面をつくる】
https://qiita.com/sano192/items/f65e01a66acb2b76af70
次:【三目並べ:3. クリックで石が置けるようにする】
https://qiita.com/sano192/items/4765ec3d3737891743e8
Excelのマクロ(VBA)で「三目並べ」「マインスイーパー」「リバーシ」を作る解説本です!
プログラミングが全くわからない人でも大丈夫! 丁寧な解説と図でしっかり理解しながら楽しくプログラミングを学ぶ事ができます!
値段:300円(Kindle Unlimited対象)
【kindle】
【booth(pdf】
ではお待ちかね、コードを書いていきましょう。
「Sheet1」の上で右クリックし、「コードの表示」を選択します。
処理を書くときはまず以下のように書きます。
Sub プログラム名()
End Sub
このSub~End Subの間に処理を書いていきます。
「sub プログラム名」まで書いてEnterを押すと後の必要な部分はエクセルが自動的に補完してくれます。
プログラム名は必ず日本語ではなく英語にしてください。
最初は「Start」ボタンを押した時の処理を書くのでプログラム名は「GameStart」にしましょう。
Sub GameStart()
End Sub
ゲームをスタートした時、以下の処理を行いたいです。
(1)盤面を全て空白の状態にする
(2)「黒番」(先手)であることを表示する
この2つを行うようにコードを書いていきます。処理内容をコードにすることを「実装する」と言います。
(1)盤面を全て空白の状態にする
これは盤面、つまりセル(B2)~セル(D4)の要素を消すということです。
範囲を指定するときは以下のように書きます。
Range(開始位置, 終了位置)
今回は石を置く範囲、セル(B2)~セル(D4)を指定するので
Range("B2", "D4")
となります。
範囲内の要素を消すには
範囲.ClearContents
と書きます。
以上より「セル(B2)~セル(D4)の要素を消す」コードは以下のようになります。
Range("B2", "D4").ClearContents
これをSub~End Subの間に書きます。
処理内容を書くときは必ず「Tab」キーを押して図のように少しずらした位置に書いてください。これを「インデントを下げる」と言います。
インデントを下げなくてもコードは実行できるのですが、今後長いコードを書き始めた時、インデントを下げていないと非常に読みづらくなります。
ここでもしコードが赤字で表示されていたらそれはエラーです。何かしら打ち間違い等があるので、自分のコードをしっかり読んで何が間違っているか確認してください。
コードが書けたら思ったとおり動作するか確かめましょう。
まずエクセルの画面に戻ります。
「Start」ボタンを押したらコードを実行する、という形にしたいので、ボタンにマクロの割当を行います。
「Start」ボタンを右クリック→「マクロの登録」を押してください。
今度は選択肢に「Sheet1.GameStart」というのが表示されています。それを選択して「OK」をクリックします。
これで「Start」ボタンにマクロが登録できました。
セル(B2)やセル(D4)などになにか適当な文字を打って、「Start」ボタンを押してみてください。
見事入力した文字が消えればコードが正常に実行されています。
(2)「黒番」(先手)であることを表示する
次に手番の表示です。
手番の表示箇所はセル(F2)なのでセル(F2)に「黒番」と入力できればOKです。
あるセルに入力を行うには以下のように書きます。
Cells(行番号, 列番号) = 入力したい要素
ここでいう列番号はアルファベットでなく数字です。セル(F2)は2行目で、列Fは6列目ですから、セル(F2)に入力する場合は以下のようになります。
Cells(2, 6) = "黒番"
「黒番」にダブルクォーテーション(“)がついていますね。これはエクセルに「これは文字ですよ」と教えてあげるためのサインです。これがないとエクセルは文字なのか? 数字なのか? 判断がつかないのでつけてあげましょう。「文字を入力するときはチョンチョン(“)をつける」と覚えておけばOKです。
ダブルクォーテーション(“)は大抵のキーボードで「Shift」+「2」で入力できます。
「cells」の先頭をCの大文字にすることや、「=」の両端の半角スペースなどはエクセルが自動補完してくれるので、「cells(2,6)=”黒番”」と書いてEnterを押せばOKです。
ではこれも処理内容としてSub~End Subの間、先程Range~と書いた次の行に書きましょう。ここでもTabキーでインデントを下げるのを忘れずに。
以下のようになります。
書けたらきちんと動くかテストします。
セル(F2)に入っている文字を消して、「Start」ボタンを押してみましょう。
きちんと「黒番」が入力されたら成功です。
書いたコードを【ここまでのコード】にまとめています。
この後も各節の最後にその節で書いたコードをまとめて記載しています。もし途中で何を書けばいいかわからなくなったらとりあえず節の最後でまとめて記載してあるコードを確認して、自分が書いたコードと見比べるとよいでしょう。
【ここまでのコード】
Sub GameStart()
Range("B2", "D4").ClearContents
Cells(2, 6) = "黒番"
End Sub
前:【三目並べ:1. 仕様を考える/画面をつくる】
https://qiita.com/sano192/items/f65e01a66acb2b76af70
次:【三目並べ:3. クリックで石が置けるようにする】
https://qiita.com/sano192/items/4765ec3d3737891743e8