超初心者向け 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がクリックされたときの処理は、ここまでです。」という意味をあらわします。
こうして、なんとか「あいさつプログラム」が完成しました。
しかし、これだけでは、プログラム的に面白くありません。そこで、このプログラムを改造してみましょう。
<改造案>
1.朝に押すと「おはよー!」と表示するが、押す時間帯によって、メッセージを変えたい。 2.オプションボタン(要は←これ)を配置し、どれを選んだかによって表示されるメッセージを変えたい。 |
ここでは、まず「1」の案から吟味していきたいと思います。
さて、時間帯によって表示するメッセージを変えたいのですが、どうすれば、今が昼かどうか判断できるのでしょうか?
答えは簡単。この関数を使います。
Hour()関数
Hour(Time)という使い方をすることにより、現在の「時」を返します。 |
それでは、まずはリストを提示しますので、打ち込んでみて下さい。
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="おやすみ☆" |
つまりこの場合、「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の両方が満たされていれば、 |
ちなみに余談ですが、こういう構文もあります。
If Hour(Time)>=4
Or Hour(Time)<12
Then Label1.Caption="おはよー!!" ↑条件A ↑条件B 条件Aと条件Bのどちらか片方でも満たされていれば、 |
この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() |
日本語訳
ボタン「Command1」が押された場合は‥‥ |