「プログラミングに興味があるけど…」
「VBAを使って作業を効率化できたらなぁ」
「プログラミング勉強したけどわからん(´・ω・)」
等々、プログラミングって結構敷居が高い!
気持ちはわかります。私は、最初にJavaを触りましたが、わからなくて何も面白くなかったです。。
でも!普段使っているExcelならわかりやすいはず!
というわけで、Excelでオセロを作ってプログラミングを楽しく学んでいきましょう。
Excelでオセロを作ろう④
オセロを作って楽しくプログラミングを学ぼう!
第4回では第3回までの真ん中の配置に加え盤状のすべての石をリセットしていきます。
今回はその過程で繰り返し文の勉強にしていきましょう。
マクロの内容追記
セルへ書き込み方法の確認
第3回の復習になりますが、セルの書き込み方法を確認しましょう。
マクロによるセルへの文字の書き込みは以下の構文でできます。
1 | Cells(行番号, 列番号).Value = "文字" |
今回は盤上のすべての石をリセットするので、盤上のすべてのセルに対し「””」(空文字)をセットしていくことになります。
すべてのセルに「””」をセットする
すべての盤上のセルを書き換えればいいので、今までの知識のみで書くと下記のようにますよね!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | '一行目のクリア Cells( 3 , 2 ).Value = "" Cells( 3 , 3 ).Value = "" Cells( 3 , 4 ).Value = "" Cells( 3 , 5 ).Value = "" Cells( 3 , 6 ).Value = "" Cells( 3 , 7 ).Value = "" Cells( 3 , 8 ).Value = "" Cells( 3 , 9 ).Value = "" '二行目のクリア Cells( 4 , 2 ).Value = "" Cells( 4 , 3 ).Value = "" Cells( 4 , 4 ).Value = "" Cells( 4 , 5 ).Value = "" Cells( 4 , 6 ).Value = "" Cells( 4 , 7 ).Value = "" Cells( 4 , 8 ).Value = "" Cells( 4 , 9 ).Value = "" '三行目以降のクリア |
…これを8行分まで書くのは…すごく長くなりそうです…(´・ω・`)
そして同じようなことを何度も繰り返している気が。
そこで!
プログラミングには繰り返し文という便利なものが用意されていたりします。
それを使用していきましょう!
繰り返し文とは
処理を繰り返したい場合に使う文です。
文章だとわかりづらいので実際見たほうがわかりやすいと思うので、
下記のコードをゲームスタートのメッセージボックスを出している部分の
あとに付け足して動きを確認してみましょう。
1 2 3 4 | '繰り返し文テスト For i = 1 To 5 MsgBox i Next |
いつも通りボタンをクリックしてみましょう。
メッセージボックスの中身が1~5まで繰り返されるはずです。
なんとなくわかったかもしれませんが、繰り返しの部分が回るたびに出力されている「i」の値が増えています。
また、「i」の初期値はForの後ろに書いてある「1」であり、繰り返しが終了するのは「To」の後ろに書いてある「5」になります。
動きがおおよそ見えてきたところで今回出てきたFor文の定義方法を確認します。
1 2 3 | For カウンタ = 初期値 To 終了値 処理 Next |
今回はカウンタとして「i」を使用しているので「i」が1ずつカウントアップしているわけですね!
繰り返し文を使って盤上の石を初期化する
では、先ほどの長い8マス×8マスの盤上の初期化のプログラムを繰り返し文を使って表現しましょう。
処理は盤が始まる3行目も途中の4行目も最後の10行目も盤の中のセルをクリアするというすべて同じ処理になっています。
また、メッセージボックスの例で出力してみた通り繰り返し文は回るたびに値が増えていました。
そのことから、長かった処理を下記のように書くことができます。
1 2 3 4 5 6 7 8 9 10 | For i = 3 To 10 Cells(i, 2 ).Value = "" Cells(i, 3 ).Value = "" Cells(i, 4 ).Value = "" Cells(i, 5 ).Value = "" Cells(i, 6 ).Value = "" Cells(i, 7 ).Value = "" Cells(i, 8 ).Value = "" Cells(i, 9 ).Value = "" Next |
1周目は「i」が「3」からスタートするので「Cells(3,2)=””」「Cells(3,3)=””」…になります。
2周目は「i」が「3」から1足されて「4」になるので「Cells(4,2)=””」「Cells(4,3)=””」…になります。
3週目は…以下(ry
10週目まで完了するとすべての石が消えているはずです。
実際に書いて動きを確認してみましょう。
先ほどの繰り返し文のテストは消して上記のプログラムを書きます。
盤に適当に石を配置してから保存してください。
そして、いつも通りボタンを押してみましょう。
しっかりと消えて初期状態に石が配置されました!!
繰り返し文の中で繰り返し文を使用する
先ほどのプログラムで最初に比べればかなり短くなりましたが、
盤上の石をクリアしていく処理を考えると行だけでなく列も繰り返し処理で書けそうなことに気付くと思います。
それはどのように表現するかというと、繰り返しの中に繰り返しを書いていきます。
今回の場合だと、行の繰り返しの中に列の繰り返しを書いていきます。
行が2から9まで1ずつ回っているので下記のようなコードで書くことができます。
1 2 3 4 5 | For i = 3 To 10 For j = 2 To 9 Cells(i, j).Value = "" Next Next |
最初に比べてかなりすっきりしましたね!
Cellsを繰り返しの変数で表すことで、一回だけ書けばよくなりました。
それでは、盤の石をクリアする処理の記述を修正して早速動かしてみましょう。
再び適当に盤上に石を配置してください。
そして「はじめからボタン」を押して実行!
その他の繰り返し文
繰り返し文ですが、今回オセロで使用したFor文以外にもVBA(マクロ)にはいくつか書き方があります。
下記のWhile文のように繰り返しを抜ける条件式を書くことができます。
While文
1 2 3 4 5 | While 条件式 処理 Wend |
whileはよく使うので今覚えていた方がいいと思いますが、その他の繰り返し文に関しては調べながら追々覚えていけばいいと思います。
次回の予定
次回は、クリックイベントを取得して石を配置できるようにしていきます。
記事一覧
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!①
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!②
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!③
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!④
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑤
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑥
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑦
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑧
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑨
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑩
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑪
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑫
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑬
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑭
【プログラミング入門】Excelでオセロを作って楽しくプログラミングを学ぼう!⑮