小学校でプログラミング教育が必修化となり、注目を集めていますが、下記のような悩みを抱えている方いませんか?
・そもそもプログラミングって何?
・どうやって学んでいけばいいの?
・社会で通用するプログラミングスキルとは?
このようなお悩みを解決するために、身の回りの自動化を題材に楽しく学んでいきましょう。
今回は、「信号機プログラム」を題材に取り上げます。
第1回~第5回までの内容はこちらに掲載しています。
事前に見ていただくことをお勧めします。
第6回目は、車を走らせる方法をご紹介します。
1. Excel画面とVBA画面の起動
第1回~第5回で作成したファイルを開き、下記の手順でマクロを有効にし、VBA画面を起動します。
※プログラム(VBA)が含まれるファイルを開くと、「セキュリティの警告」が表示されることがあります。表示されない方は、そのまま次の手順に進んでください。
2. 車の画像の挿入
下記の手順で車の画像を挿入します。
※車の画像は予め、パソコンに保存しておく必要があります。
3. 図形に名称を設定
図形をわかりやすく(識別しやすく)するため、図形の名称を下記の手順で変更します。
4. 車の初期(プログラム開始時の)位置の作成
VBA画面を開き、車の初期位置を設定するプログラムを作成します。
車(画像)の位置は、Shape オブジェクトのTop・Left・Rotation プロパティを使用します。
サンプルコードを使用し、Do While~より上にプログラムを追加します。
サンプルコード
ActiveSheet.Shapes("車_白").Top = 250
ActiveSheet.Shapes("車_白").Left = 500
ActiveSheet.Shapes("車_白").Rotation = 0
Top プロパティは、行1のセルの上端を座標0として、画像の上端までの距離を指定します。
Left プロパティは、列1のセルの左端を座標0として、画像の左端までの距離を指定します。
Rotation プロパティは、画像の回転角を指定します。
※Top・Leftの単位は、ミリでもピクセルでもなく、ポイントになります。Rotationは度になります。
5. 車を走らせるプログラムの作成
車が走るというのは、車の位置を高速で変化させることで走っているように見せることになります。
サンプルコードを使用し、Do While~の中にプログラムを追加します。
サンプルコード
ActiveSheet.Shapes("車_白").Left = ActiveSheet.Shapes("車_白").Left - 10
今の車の左端から10ポイント引いたものを次の左端にするというプログラムになります。
これをDo Whileで繰り返すことで
500→490→480→470→460→・・・と車の位置を高速で変化させることができます。
ただし、あまりにも高速でプログラムを実行すると、画像を移動させる時間がなくなり、移動できません。
よって、下記のサンプルコードを使用し、Do While~の中に少し待ち時間を入れるプログラムを追加します。
サンプルコード
Application.Wait [Now()] + 100 / 86400000
現段階ではあまり難しく考えず、「100」が待機する時間だと思ってください。
単位はミリ秒ですので、100ミリ秒は0.1秒を表しています。
以上でプログラムは完成です。
6. 動作確認
それでは、作成したプログラムを開始して動作を確認します。
手順4. で作成した初期位置、手順5. で作成した移動量(-10)や待機時間(100)をいろいろ変更してみましょう。
移動量や待機時間が変わると、車の速度が変わります。
私は小学生のころ、「道のり(距離・移動量)は、速さ(速度)×時間」で覚えました。
つまり、「速度は、移動量÷時間」になります。
移動量が大きくなると、早くなり、移動量が小さくなると、遅くなります。
また、時間が短くなると、早くなり、時間が長くなると、遅くなります。
このように、プログラミングでも算数の知識は必要になってきます。
以上で第6回目の内容は終了です。
【ポイント】
- 車(画像)の位置は、Shape オブジェクトのTop・Left・Rotation プロパティを使用する
- 「車が走る」というのは、車の位置を高速で変化させることで走っているように見せることである
次回は、信号の色によって車を走らせたり、止めたりするプログラムを作成していきます。