技術情報コラムColumn

VBScriptで条件分岐処理 その2

技術解説
前回のコラム「VBScriptで条件分岐処理」では、IF文による条件分岐処理を紹介いたしました。 YesかNoか、大か小かといった2択の場合はIF文が使いやすいのですが、例えば選択肢が10個ある場合などはIF文でも対応できますが非常に見通しの悪いスクリプトになってしまいます。
今回のVBScript入門の第4回は、選択肢が多い場合の条件分岐処理の方法について説明いたします。
では早速、スクリプトを作成してみましょう。

① メモ帳を起動して、下図のように入力します。

VBScript    
② 「名前を付けて保存」を選択し、任意のフォルダに「第4回.vbs」という名前で保存します。
VBScript    
③ メモ帳を終了し、エクスプローラで「第3回.vbs」を保存したフォルダを開きます。
VBScript    
④ 「第4回.vbs」ファイルをダブルクリックして実行します。 実行した時間によって下図のような実行結果が表示されます。
VBScript VBScript
   
では、スクリプトの内容について説明いたします。 「Select Case文」の構文は以下の通りになります。
VBScript    
赤色の枠で囲んだ部分は、変数または式を記述します。
今回の例では、「Now()関数」で現在の日時(yyyy/mm/dd hh:mm:ss)を取得し、更に「Hour(日時)関数」で時刻(mm)部分のみを抽出して変数lngHourに格納しています。
青色の枠で囲んだ部分は、変数の値または式の結果と、各Case文に書かれた数値または文字列と一致する処理が実行されます。
今回の例では、実行時の時刻によって下記の通りメッセージが表示されます。
   
Case文 実行時間 表示メッセージ
Case 8,9,10 8時、9時,10時 おはようございます。今日も頑張りましょう。
Case 11 11時 もうすぐお昼ですね
Case 12 12時 お昼ですね
Case 13,14,15 13時,14時,15時 こんにちは
Case 16 16時 もうひと踏ん張り頑張りましょう
Case Else 上記以外の時間 残業ですか?頑張ってくださいね
    「Select Case文」は条件を多岐に渡って記述するときに便利なステートメント(条件分岐などあらかじめシステムに組み込まれた命令文のことを言います)になります。
なお、今回の例では現在時間の数値で処理を分岐させていますが、文字列で条件分岐することも可能です。文字列で分岐する場合は、「Case “文字列”」のようにCase分で文字列をダブルコーテーションで囲んで記述します。
今回はここまでです。また次回のコラムをお待ちください。

【参考】 Now()関数について
Now()関数は、現在時刻を取得する関数です。
メモ帳を起動して、下図のようなスクリプトを作成し実行するとNow()関数の動作が確認できると思います。

VBScript VBScript

Hour(日時)関数について
Hour(日時)関数は、かっこ内に記載された日時から時間を抽出する関数です。関数を動作させる為に必要なパラメータは関数名の後に()を書き、その中に記述します。 Hour()関数の場合は日時を、Now()関数の場合は必要なパラメータが存在しませんので()内は空欄になります。
メモ帳を起動して、下図のようなスクリプトを作成し実行するとHour()関数の動作が確認できると思います。 VBScript     実行結果は、日付と時間を両方記述した1つ目のHour()関数では「12」、時間だけを記述した2つ目のHour()関数では「16」、引数にNow()関数を指定した場合は、スクリプトを実行した時間が表示されます。 では、Hour()関数の引数に時間を省略し「”2015/12/1”」のように日付だけを記述した場合は、どのような結果になるのでしょう? 気になる方はご自身で確認してみてください。

◆他の回のコラムを見る

第1回 VBScriptで簡単なスクリプトを書こう
第2回 VBScriptで文字の入力
第3回 VBScriptで条件分岐処理
第5回 VBScriptでループ制御
第6回 バッチファイルでのVBScriptの利用
第7回 VBScriptでのコマンドライン引数の使い方