29.条件分岐(4) 「かつ」「または」「否定」 - VBSの家

.

.

VBSEditor

VBSの編集にはVBSEditorを利用しよう。
VBSの編集に便利な機能が搭載されているよ。
詳しくはVBSEditorのページで確認してね。

広告

VBSEditor
http://vbsh.hokt.net/editor/
HPサービス
http://vbsh.hokt.net/service/
hoktnet
http://hokt.net/
ほくとのぶろぐ
http://blog.hokt.net/

Lesson.29 条件分岐(4) 「かつ」「または」「否定」

「かつ」「または」

今まではある条件のとき、というものでしたが、「ある条件かつある条件のとき」というようなことがしたいときがありますよね。
実はこれは今までの知識だけで実現できます。ifを2回使って書くことができますね。
前回は昼が0時から12時までとへんてこだったので、今回は朝を0時から5時まで、昼を6時から18時までとしたいと思います。
ifを2回使うとこうかけますよ。
例:

nowh = hour(now)
if nowh >= 6 then
  if nowh <= 18 then
    msgbox "昼です。"
  else
    msgbox "夜です。"
  end if
else
  msgbox "朝です。"
end if

ちなみに一度時間をnowhに収めているのは、ほとんど起きませんが、処理中に時間が変わることがあるからです。
そうなると1回目と2回目で違う時間を比較してしまい、予期せぬエラーが発生することがあるため、1度変数に保存しています。
この例でも十分動きますが、同じことを2度も書いたり構造が複雑になっていやですよね。
そこで、「かつ」という表現が出てきます。これは「and」です。
「and」を使うときは条件ごとに括弧で囲み、それをandでつなげます。
例:

nowh = hour(now)
if (nowh >= 6) and (nowh <= 18) then
  msgbox "昼です。"
else
  msgbox "夜です。"
end if

さっきよりも断然きれいになりましたよね。
使い方はさほど難しくないですよね。
「かつ」と似た表現として「または」というものがあります。
「または」は、どちらか一方が条件どおりならば、という意味ですね。
これについては今回霊を省略します。使い方はandと同じで、
andの変わりに「or」を使うだけです。

「否定」

今度は逆にelseの内容だけを行いたいときを考えます。
こんな例を考えます。
現在の「時」が15時ではないときだけ「おやつの時間ではありません。」と表示させるプログラムです。
今までのもので考えるとifとelseの間を空白にしてこうかけます。
例:

if hour(now) = 15 then

else
  msgbox "おやつの時間ではありません。"
end if

しかし空白なのは何か変な感じがしますよね。
数学には「≠」という記号がありますよね。
等しくないという意味ですね。
VBSにもこの意味のものがあります。
<>」と書きます。
または、「not」と書くこともできます。
では両方の例で書いて見ましょう。
例:

'<>の例
if hour(now) <> 15 then
  msgbox "おやつの時間ではありません。"
end if

'notの例
if not (hour(now) = 15) then
  msgbox "おやつの時間ではありません。"
end if

どうですか?
ところでそろそろここら辺までくると日本語の説明よりもコードを見たほうがわかるようになっていたりしませんか?
そうなると筆者も書くのが楽になりますね。(笑)

練習

現在の「時」が6時または8時ならば「出勤の時間です。」と表示させよ。


解答

Dim nowh
nowh = hour(now)
if (nowh = 6) or (nowh = 8) then
  msgbox "出勤の時間です。"
end if

△ 先頭へ