超初心者向け VBプログラミング講座

第2章:まずは何か作ってみる(続き)

前のページへ目次に戻る

2−3:あいさつプログラムを作ってみる。(コード記述編)

 第2節では、画面のデザインについて、おもに取り扱ってきましたが、この節では、いよいよ肝心のプログラミング(コード記述)の部分に
 入っていきたいと思います。

  
 それでは、まずボタンの上でダブルクリックをして下さい。
 もしかしたら、今まで誤操作でダブルクリックをしてしまった
 方には、見覚えのある画面が表示されたかもしれません。

 画像サイズの関係で、少しウィンドウが小さいですが、ご容赦下さい。
 さて、ボタンをダブルクリックすると、上のような画面が表示されます。
 これは、コード記述画面といって、プログラムにさせる仕事(コード)を書くための画面です。
 例えば、ここに「ボタンがクリックされたら、『おはよー!』と表示しなさい。」という意味のコードを書けば、
 プログラムはその通りに動いてくれます。
 しかし、当然プログラムは日本語を解せませんので、ちゃんとVBの言葉で書く必要があります。

 それでは、とりあえず、この画面に、こう書いてみて下さい。
 ただし、青字で書いてある部分以外は、必ず半角で書いて下さい。(大文字と小文字の区別をする必要はありません。)

Private Sub Command1_Click()
    Label1.Caption="おはよー!"
End Sub

 そのうち、赤で書かれている部分は、すでに元から書かれているコードなので、改めて書く必要はありません。
 また、「Label1」と打ったところで、変な窓が表示されるかもしれませんが、それも無視して入力していって下さい。

  
 そこで、赤丸で囲ってある三角のボタンを、再びクリックしてみて下さい。
 すると、先ほどと同じように、あいさつプログラムの画面が表示されると思います。

 そして、「ボタン」を押してみて下さい。

 

   
 文字が変わったと思います。
 もしも変わらなかったり、エラーが出たりした場合は、コードが間違っているか
 変なプロバティ(例えば「オブジェクト名」)をいじってしまっている可能性がありますので、
 もう一度よく見直してみて下さい。

 さて、こうしてめでたくプログラムは完成したわけですが、さっき入力したコードの意味が分からないと、どうしようもありません。
 そこで、先ほど入力したコードの解説を行います。

Private Sub Command1_Click()

 これは、「ここから先には、『Command1』がクリックされた時に行う処理が書いてあります。」という意味です。
 たいてい、オブジェクト(ボタンやラベルなど)をダブルクリックすると、勝手に表示されますので、あまり気にする必要はありません。

Label1.Caption="おはよー!"

 これは、「Label1」(つまり、「・・・ZZZ」と書いてあるラベル)のCaptionを、「おはよー!」に変えなさいという意味の命令文です。
 つまり、この文によって、ラベルの「Caption」プロバティを、直接コードでいじることができるのです。

 ちなみに、「Label1.Caption="こんばんわ"」と書くと、

 というプログラムになります。

End Sub

 これは、先頭の「Private Sub〜」とセットで記述されます。
 つまり、この場合は「Command1がクリックされたときの処理は、ここまでです。」という意味をあらわします。


2−4:あいさつプログラムの改造。

 こうして、なんとか「あいさつプログラム」が完成しました。
 しかし、これだけでは、プログラム的に面白くありません。そこで、このプログラムを改造してみましょう。

<改造案>

1.朝に押すと「おはよー!」と表示するが、押す時間帯によって、メッセージを変えたい。

2.オプションボタン(要は←これ)を配置し、どれを選んだかによって表示されるメッセージを変えたい。

 ここでは、まず「1」の案から吟味していきたいと思います。

 さて、時間帯によって表示するメッセージを変えたいのですが、どうすれば、今が昼かどうか判断できるのでしょうか?
 答えは簡単。この関数を使います。

Hour()関数

Hour(Time)という使い方をすることにより、現在の「時」を返します。
例えば、午後7時にこの関数を使うと、「19」を返します。

 それでは、まずはリストを提示しますので、打ち込んでみて下さい。

Private Sub Command1_Click()
    If Hour(Time)<4 Then Label1.Caption="おやすみ☆"
    If Hour(Time)>=4 And Hour(Time)<12 Then Label1.Caption="おはよー!!"
    If Hour(Time)>=12 And Hour(Time)<17 Then Label1.Caption="こんにちわ"
    If Hour(Time)>=17 And Hour(Time)<23 Then Label1.Caption="こんばんわ"
    If Hour(Time)>=23 Then Label1.Caption="おやすみ☆"
End Sub

 少し長いですが、例によって、青字の部分以外は、全て半角文字で打ち込んで下さい。
 全角で入力してしまうと、VBはそれを「プログラム」と認識してくれません。
 また、VBでは大文字と小文字を区別しませんので、全て小文字で打ち込んでもOKです。(てゆうか、VBが勝手に直してくれます。)

 ‥‥さて、早速プログラムを走らせてみましょう。と言いたいところなのですが、残念ながら、時間を動かすことは不可能なので、
 全てのメッセージを見ることはできません。
 仕方がありません、ここではプログラムの解説のみにとどめておきます。

Private Sub Command1_Click()

 「Command1」をクリックすると、この行以下が実行されます。

If Hour(Time)<4 Then Label1.Caption="おやすみ☆"

 この行を解説するには、まず「if」文について解説しなければなりません。
 とりあえず日本語に訳してみると、この行は

「今の時間が『4未満』なら、「おやすみ」と表示しろ。そうでなければ、何もするな。

 という意味です。詳しく見ていきましょう。

If文

If Hour(Time)<4 Then Label1.Caption="おやすみ☆"
 
緑色の部分に書かれている条件が満たされていれば、
オレンジ色の部分(Then以降)に書いてある命令を実行しなさい。

 つまりこの場合、「4時未満」なら、「おやすみ☆」と表示されますが、「4時以上」の場合、何も表示しません。

If Hour(Time)>=4 And Hour(Time)<12 Then Label1.Caption="おはよー!!"

 それでは、↑これはどうでしょう?
 日本語に訳すと、「4時以降で、かつ12時より前なら、『おはよー!!』と表示しなさい。」という意味です。
 この場合、さっきの「4時前なら〜」と違って、少々条件が複雑です。
 しかも、見たことのない「And」とかいうのまであります。
 それでは、詳しく見ていきましょう。

If Hour(Time)>=4 And Hour(Time)<12 Then Label1.Caption="おはよー!!"
  ↑条件A        ↑条件B

条件Aと条件Bの両方が満たされていれば、
Then以降に書いてある命令を実行しなさい。

 ちなみに余談ですが、こういう構文もあります。

If Hour(Time)>=4 Or Hour(Time)<12 Then Label1.Caption="おはよー!!"
  ↑条件A        ↑条件B

条件Aと条件Bのどちらか片方でも満たされていれば、
Then以降に書いてある命令を実行しなさい。

 この2つの構文の違いは、「And」を「Or」に変えただけです。
 つまり、Andは、条件Aと条件Bの両方が満たされていないと、OKを出しません。
 しかし、Orは、条件Aか条件Bの、どちらか片方でも満たされていれば、OKしてくれるのです。

 というわけで、問題です。次の命令文を訳してみて下さい。

If Hour(Time)>=12 And Hour(Time)<17 Then Label1.Caption="こんにちわ"

 

 答えは、
 12時以降 そして 17時より前 ならば 「こんにちわ」と表示させなさい。
 となります。

 このIf文は、この後もしょっちゅう出てきますので、この辺で覚えておきましょう。

プログラムの日本語訳

Private Sub Command1_Click()
If Hour(Time)<4 Then Label1.Caption="おやすみ☆"
 If Hour(Time)>=4 And Hour(Time)<12 Then Label1.Caption="おはよー!!"
If Hour(Time)>=12 And Hour(Time)<17 Then Label1.Caption="こんにちわ"
If Hour(Time)>=17 And Hour(Time)<23 Then Label1.Caption="こんばんわ"
If Hour(Time)>=23 Then Label1.Caption="おやすみ☆"
End Sub

日本語訳

ボタン「Command1」が押された場合は‥‥
4時より前なら、「おやすみ☆」と表示しなさい。
4時〜12時の間なら、「おはよー!!」と表示しなさい。
12時〜17時の間なら、「こんにちわ」と表示しなさい。
17時≦現在の時刻<23時なら、「こんばんわ」
今が23時以降なら、「おやすみ☆」と表示しなさい。
ボタン「Command1」が押された場合の処理はここまでです。

 

 

次のページへ目次に戻る