小学校でプログラミング教育が必修化となり、注目を集めていますが、下記のような悩みを抱えている方いませんか?
・そもそもプログラミングって何?
・どうやって学んでいけばいいの?
・社会で通用するプログラミングスキルとは?
このようなお悩みを解決するために、身の回りの自動化を題材に楽しく学んでいきましょう。
今回は、「信号機プログラム」を題材に取り上げます。
第1回~第6回までの内容はこちらに掲載しています。
事前に見ていただくことをお勧めします。
第7回目は、信号の色によって車を走らせたり、止めたりする方法をご紹介します。
1. Excel画面とVBA画面の起動
第1回~第6回で作成したファイルを開き、下記の手順でマクロを有効にし、VBA画面を起動します。
※プログラム(VBA)が含まれるファイルを開くと、「セキュリティの警告」が表示されることがあります。表示されない方は、そのまま次の手順に進んでください。
2. 車と信号機の位置を変更
下記のように車と信号機の位置を変更します。
信号の色によって車を走らせたり、止めたりしているのをわかりやすくするためです。
<注意1>
非表示の図形は選択できないため、下記の手順で移動する前に表示させておく必要があります。
<注意2>
車の初期位置は、プログラム内で指定しているため、下記の値も位置に合わせて変更する必要があります。
3. 信号の色によって車を走らせたり、止めたりするプログラムの作成
第6回で作成した下記のプログラムは、プログラムが実行されると、車の位置が常に「-10」していきます。
そこで、このプログラムが実行される条件を信号の色が赤でないときに変更します。
条件分岐には、If 関数を使用します。
信号の色は、Select Case ステートメントで使用しているcolor(変数)でわかります。
color = 0のとき、信号の色は「青」、color = 1のとき、「黄」、color = 2のとき、「赤」になります。
信号の色が赤でない(赤以外)は、color≠2になります。
VBAの場合、≠(ノットイコール)は、「< >」で表現します。
サンプルコードを使用し、プログラムを変更します。
サンプルコード
If color <> 2 Then
ActiveSheet.Shapes("車_白").Left = ActiveSheet.Shapes("車_白").Left - 10
End If
4. 信号の色+車の位置から車を走らせたり、止めたりするプログラムの作成
手順3のプログラムを実行すると、信号が赤になると、車の位置に関係なく止まってしまいます。
信号が赤の時、止まらなければならないのは、信号付近のみです。
本プログラムでは、信号付近は左から350~450の位置です。
車の位置が350~450のときは、信号の色を確認し、赤なら止まる、赤以外なら進む(手順3で作成したプログラム)、
車の位置が350~450以外のときは、常に進む
になります。
車の位置は、ActiveSheet.Shapes("車_白").Left になります。
車の位置が350~450は、車の位置が350以上、かつ(AND)、車の位置が450以下と2つに分けて表現します。
サンプルコードを使用し、手順5で作成したプログラムを変更します。
サンプルコード
If 350 <= ActiveSheet.Shapes("車_白").Left And ActiveSheet.Shapes("車_白").Left <= 450 Then
If color <> 2 Then
ActiveSheet.Shapes("車_白").Left = ActiveSheet.Shapes("車_白").Left - 10
End If
Else
ActiveSheet.Shapes("車_白").Left = ActiveSheet.Shapes("車_白").Left - 10
End If
以上でプログラムは完成です。
5. 動作確認
それでは、作成したプログラムを開始して動作を確認します。
信号の点灯時間を変更し、正しく信号の色によって、車が走ったり、止まったりしているか確認しましょう。信号無視をしてしまったり、停止位置がずれている場合は、手順4で作成した信号を確認する範囲を変更してください。
以上で第7回目の内容は終了です。
【ポイント】
- 車が走ってよい条件(位置、信号の色)を追加する
- ≠(ノットイコール)は、「< >」で表現する
- CはA~B(範囲)は、CがA以上、かつ(AND)、CがB以下と2つに分けて表現する
次回は、車の進行方向を変えるプログラムを作成していきます。