【VBScript】Windows メモ帳プログラミング入門(第3回)条件分岐

Windows PC

こんにちは、プログラマーのふみです。みなさんはコンピューターでプログラミングができますか?

日本の小学校では、2020年度からプログラミング教育の全面実施が始まります。
そこで、 VBScript(ブイビースクリプト)という言語を Windows 10 に標準搭載されているアクセサリの「メモ帳」に記述して使う、超簡単なプログラミングを4回に分けて紹介しています。

過去の記事はこちら:
【VBScript】Windows メモ帳プログラミング入門(第1回)プログラムの作成と実行
【VBScript】Windows メモ帳プログラミング入門(第2回)命令の順番

二択で問いかけるメッセージを表示する

MsgBox関数には問いかけるメッセージを表示させることができます。
次のコードのプログラムを作成して実行してみましょう。

MsgBox MsgBox("「はい」か「いいえ」を押してください", vbYesNo) 

このプログラムを実行すると、メッセージ「「はい」か「いいえ」を押してください」が表示されると共に、「はい」と「いいえ」のボタンが表示されます。

「はい」をクリックすると「6」、「いいえ」をクリックすると「7」が表示されます。

ここで使っているMsgBox関数は、第1回の講座で使ったMsgBox関数の使い方とは異なる使い方をしています。
最初の「はい」、「いいえ」の確認のメッセージは、2つ並んでいるMsgBoxのうち、右側のコードが使われています。
メッセージが表示されたときにクリックしたボタンに応じた値(戻り値)が右側のMsgBox関数に付加され(右側のMsgBoxのコードが数値に置き換わる)、左側のMsgBox関数で戻り値が表示される仕組みになっています。

後で解説する、変数を使ったコードを参考にすると、この仕組みがよりわかると思います。

プログラムは条件を設定して処理を分岐できる

VBScript に限らず、コンピューターで使われるプログラムは、条件で分岐するコードがあります。
これは多くのプログラムに共通する処理の一つです。

If構文を使ったプログラム

まずは、「If構文」と呼ばれている「If ~ Then」で処理する方法をサンプルプログラムで紹介します。
If構文は条件分岐の処理の中では非常に有名です。

次のコードのプログラムを作成して実行してみましょう。

If MsgBox("あなたは20歳以上ですか?", vbYesNo) = 6 Then
    MsgBox "あなたはお酒が飲める年齢です"
Else
    MsgBox "あなたはお酒が飲めない年齢です"
End If

このプログラムを実行すると、メッセージ「あなたは20歳以上ですか?」が表示されると共に「はい」と「いいえ」のボタンが表示されます。

ここで「はい」をクリックすると、「MsgBox(“あなたは20歳以上ですか?”, vbYesNo)」に 6(vbYes)の値が付加されます。
すると、If の条件「MsgBox(“あなたは20歳以上ですか?”, vbYesNo) = 6」が一致(True)になり、If の次の行のメッセージ表示が実行されます。
その後の処理は Else 以降の処理を飛ばして End If の後に移ります。

一方、「いいえ」をクリックすると、「MsgBox(“あなたは20歳以上ですか?”, vbYesNo)」に 7(vbNo)の値が付加されます。
If の条件「MsgBox(“あなたは20歳以上ですか?”, vbYesNo) = 6」が不一致(False)になり、Else の次の行のメッセージ表示が実行されます。
その後の処理は End If の後に移ります。

2行目と4行目のMsgBox関数は、条件分岐で処理されている事をわかりやすくするために左側を半角スペース4つ分開けています。

変数の使い方

今度は次のコードのプログラムを作成して実行してみましょう。

Option Explicit '変数宣言の強制
Dim lngMSG 'メッセージボックスの変数
Dim strTXT 'テキストの変数

lngMSG = MsgBox("あなたは20歳以上ですか?", vbYesNo)

If lngMSG = 6 Then '「はい」が押されたときの処理
    strTXT = "飲める"
Else
    strTXT = "飲めない"
End If

MsgBox "あなたはお酒が" & strTXT & "年齢です"

このプログラムを実行すると、一つ前のサンプルコードと同じ動作をします。
ここでは変数を使っています。変数とは数値や文字を一時的に保管する要素です。

数学に例えると、方程式に出てくる「x」 や「y」のようなものです。
しかし、変数は値を上書きできたり、文字やオブジェクトを代入できるところが、数学の「x」 、「y」とは異なります。

Option Explicit
コメントアウトに記載のとおり、変数宣言を強制させるコードです。
このコードがあるプログラムでは変数を宣言せずに使用するとエラーが発生します。
VBScript コードのスペルを間違えて変数として動作してしまうと、プログラムの不具合を見つけるのが大変になってしまいます。
そうしたトラブルを防ぐ意味で、プログラムの先頭に「Option Explicit」を記載しておくことを推奨します。

Dim
変数を宣言するコードです。
半角スペースを開けた後の文字が変数として宣言されます。
VBScript の変数はすべてVariant型になります。

ちなみにVBAでは変数の宣言のしかたが VBScript と異なります。
「Dim lngMSG As Long」や「Dim strTXT As String」のように、VBAでは変数の型を指定する必要があります

テキスト文字は「&」でつなげることができる

上記コードでは最下行のMsgBox関数は文字列と変数を「&」でつなげています。

Excelの関数でも「&」で文字や関数をつなげることができます。

Select構文を使ったプログラム

最後に、Select構文と呼ばれている「Select Case ~」で処理する方法をサンプルプログラムで紹介します。

次のコードのプログラムを作成して実行してみましょう。

Option Explicit '変数宣言の強制
Dim lngMSG 'メッセージボックスの変数
Dim strTXT 'テキストの変数

lngMSG = MsgBox("あなたは20歳以上ですか?", vbYesNoCancel)

Select Case lngMSG
Case 6 '「はい」が押されたときの処理
    strTXT = "飲める"
Case 7 '「いいえ」が押されたときの処理
    strTXT = "飲めない"
Case Else
    MsgBox "キャンセルされました"
    WScript.Quit
End Select

MsgBox "あなたはお酒が" & strTXT & "年齢です"

このプログラムを実行すると、メッセージ「あなたは20歳以上ですか?」が表示されると共に、「はい」、「いいえ」と「キャンセル」のボタンが表示されます。

「はい」と「いいえ」の動作は今までと同じですが、「キャンセル」を押すか、右上の「×」をクリックと「キャンセルされました」のメッセージが表示され、プログラムが中断終了します。

Select構文は、条件分岐が多いときに使用すると、IF構文よりもプログラムを見やすくすることができます。

まとめ

  • プログラムは条件を設定して処理を分岐させることができる。
  • MsgBox関数はクリックしたボタンに応じた値が代入される。
  • 「Option Explicit」で変数の宣言を強制しておくとプログラムの記述ミスの防止になる。
  • VBScript の変数はすべてVariant型
  • Select構文は条件分岐が多いときに使うと便利

ありがとうございました。

次の記事はこちら:【VBScript】Windows メモ帳プログラミング入門(第4回)ループ処理

コメント

タイトルとURLをコピーしました