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

第3章:基本事項をマスターする

前のページへ目次に戻る

3−1:「へぇ〜」ボタンを作ってみる

 さて、前回は「あいさつプログラム」という、何の面白みもないプログラムを作ってみましたが、今回は、
 2003年の流行語大賞にも輝いた、あの「へぇ〜」ボタンを作ってみようと思います。

 とは言っても、「トリビアの泉」を御存知ない方には、何の事やら全く分からないと思いますので、まずは「へぇ〜」ボタンについての
 解説をしてみようと思います。

 
 このウィンドウの下の方にある「へぇ〜」ボタンを押すと、上の数字がどんどん増えていく。
 ただ、それだけのプログラムです。
 
 例えば、この状態で「へぇ〜」ボタンを押すと、数字は「17へぇ」になります。
 ただし、番組のルール上、数字が20へぇを超えることはできません。

 さて、プロパティの設定はもはや簡単にできると思いますので、基本的な解説は省略します。
 ただし、上の「16」の部分(実はこれ、ラベルなんです)の、背景色や文字の色を変えるやりかたは、まだ説明していませんので、
 これについて説明します。

 
 赤い四角で囲んでいる部分の「BackColor」をクリックします。
 そうすると、右側に▼が出てくると思いますので、それをクリックして下さい。
 
 そうすると、下のような画面が出てくると思います。
 
 
 
 そして、左図の青い矢印で指し示している「パレット」タブをクリックしてみて下さい。
 すると、↓こんなのが表示されたと思います。
 
 
 
 これを使って、ラベルの背景を好きな色に変えることができるのです。
 ここでは、左下の黒色を選択しておきましょう。

 すると、ラベルの背景が真っ黒になったと思います。
 しかし、それでは肝心の文字が見えませんので、今度は文字の色を変えることにします。
 

 
 そして、「ForeColor」プロパティをクリックし、さっきの要領で、今度は文字を
 水色に変えておいて下さい。
 
 そして後は、「Font」プロパティを使って、フォントサイズを36ポイントぐらいにして、
 次に「Alignment」を「中央揃え」に設定しておきます。
 
 そして、その右にもう1つ、「へぇ」と書いただけのウィンドウを設置し、
 最後に、下の方に「へぇ〜」ボタンを設置すれば、これでデザイン関係は完了です。
 
 なお、オブジェクトIDや、Label1のCaptionを変更する必要はありません。
 
※ 注意
 
 必ず、「数字のラベル → 『へぇ』のラベル → 『へぇ〜』ボタン」の順で設置して下さい。
 そうしないと、正しく動作しません。

 さて、これで初期設定は完了しました。
 おそらく、下記のような画面になっていると思います。

 「Label1へぇ」とかいう、変な表示になっていますが、これは後で直しますので、ここでは考えないことにします。
 
 さて、外観はだいたい整ったのですが、実は「へぇ〜ボタン」を作るのに必要なものが、もう1つあります。
 それは、いま「何へぇ」なのかを記憶させておく箱です。
 
 まず、このプログラムは、「へぇ〜」を押すたびに、数字を1つずつ増やしていくプログラムなのですから、
 ボタン(Command1)に、「このボタンが押されたら、『へぇ〜』の数字を1つ増やしなさい」という命令を書けば良い、
 それは容易に想像できると思います。
 
 その「『へぇ〜』の数字」を記録させておく場所、それが今から説明する、変数というものなのです。

 

3−2:変数とは

 もちろん、Label1.Caption=Label1.Caprion+1(「ラベル1のキャプションの値を1増やしなさい」という意味)と書いても良いのですが、
 それでは長すぎますし、それに変数を知らないと、VBを使いこなすことはできませんので、ここで変数について解説します。
 
 では、何も考えずに以下の通りに操作して下さい。
 まず最初に、フォーム上の何もない部分(下図の青い矢印で指し示した部分)をダブルクリックします。
 

 
 すると、下記のような画面が表示されると思います。

Private Sub Form_Load()

End Sub

 これは、「このウィンドウを表示する際、一番最初に行う処理」という意味です。
 つまりは、このプログラムを起動したとき、一番最初に「Form_Load()」が実行される、そんな感じで理解していただければ結構です。

 まず、ここに以下のように記述します。

Dim Hee As Integer 
 
Private Sub Form_Load()
  Hee = 0
  Label1.Caption = Hee
End Sub

 例によって、赤字の部分は元から書かれている部分。そして、原則、全ての文字を半角で入力して下さい。
 さて、さっそく最初っから、初めて見る構文があります。

Dim Hee As Integer

 これは、Dim文と言って、箱(変数)を用意する命令です。
 このプログラムには、いま何へぇかを記録しておく箱が必要なので、あらかじめDim命令に、箱を作らせておこうというわけです。

Dim命令

変数(数字や文字を入れておくための箱)を作らせる命令。
例えば、
 
Dim Hoge As Integer
 
と打ち込むと、「Hoge」という名前の箱(変数)が作られる。

 つまり、上の「Dim Hee As Integer」の前半を日本語に意訳すると、「『Hee』という名前の箱(変数)を作りなさい。」となります。
 箱の名前は自由に決められるのですが、ここでは分かりやすいように『Hee』にしてあります。
 では、後半の「As Integer」は何を意味しているのでしょうか? 実はこの部分では、変数(箱)の型を意味しています。
 
 車に、ワゴン車、トラック、オートバイといった種類があるように、変数にも型があります。
 変数には数字しか入れられない箱と、文字しか入れられない箱、文字も数字も入れられる箱、小数点が使える箱‥‥など、
 色々な種類があるので、どのタイプの箱を作るのかを、Dim命令に指示しておく必要があるのです。
 
 例えば、

Dim Hoge As String

 と入力すれば、「Hogeという文字型の箱を作りなさい」という意味になるので、文字しか入れられない変数「Hoge」が作られますし、

Dim Hoge As Double

 と入力すれば、小数点308ケタを扱える、凄い箱を作ることもできます。
 まあ、「へぇ〜」ボタンに、小数点や文字は必要ないので、ここでは、数字しか入れられない数値型の箱を作ることにします。

Dim Hee As Integer

 ちなみに、このInteger型の箱には、-32768〜32767までの整数を入れることができます。
 もっと性能の良いLongというタイプの箱もあるのですが、むやみに良い箱を作りすぎるとメモリの無駄になりますので、
 極力、一番小さいデータ型を使った方が良いでしょう。
 
 
☆ 変数を宣言する場所
 
 さて、上のプログラムを打ち込むときに、違和感を感じられた方がいるかもしれません。
 なぜなら、

Dim Hee As Integer 
 
Private Sub Form_Load()
   Hee = 0
   Label1.Caption = Hee
End Sub

 いつもなら、赤で囲まれた部分に命令を書くのに、今回に限っては、その外側に書きました。
 理由は簡単。変数の宣言は、一番初めにする必要があるからです、
 
 例えば、

☆ 悪い例
 
Private Sub Form_Load()
  
Dim Hee As Integer
  Hee = 0
  Label1.Caption = Hee
End Sub

 こんな風にしても良さそうな気がしますが、これだとその箱は、一番下のEnd Subが実行された途端に消えてしまいます。
 つまり、せっかく「へぇ〜」の数を覚えさせるために作った箱が、その威力を発揮する間もなく、破棄されてしまうのです。
 
 赤で囲まれた部分には縄張りがあって、その縄張りの中で作られた箱を、国外に持ち出すことは許されないのです。
 そんな事にならないように、

Dim Hee As Integer 
 
Private Sub Form_Load()
   Hee = 0
   Label1.Caption = Hee
End Sub

 Form_Loadの縄張りの外側に書いておけば、たとえEnd Subが実行されても、変数「Hee」は、問題なく国外に持ち出せます。
 この辺は少しややこしいのですが、そのうち分かりますので、今はサラっと聞き流していただいて構いません。
 
 
☆ プログラムの続きを作る

 さて、残りの部分を解説していきます。

Private Sub Form_Load()

 ここから「End Sub」で囲まれた部分は、全て「Form_Load」の縄張りです。
 この縄張りのことをプロシージャと言います。
 
 この赤で囲まれた部分には、「フォームが創造された時に実行する処理」を書きます。

Hee = 0

 これは、変数「Hee」に、0を入れなさいという意味です。
 VBでは、作られた変数(箱)には自動的に0などが入れられるのですが、他の言語ではそうはいきませんので、
 これは必ず習慣づけておいて下さい。
 
 ちなみに、「Hee=1」とすれば、変数Heeには「1」が、「Hee=365」と書けば、変数Heeには365が入れられます。
 この動作を、代入と言います。

Label1.Caption = Hee

 お馴染み、Label1のCaptionをいじる命令ですが、ここでは変数を使っています。
 つまり、この命令を実行すると、Label1のCaptionには、変数Heeの中身(つまりゼロ)が入れられます。

End Sub

 プロシージャ「Form_Load」の縄張りは、ここまでです。
 

☆ 実行する

 それでは、プログラムを実行してみましょう。
 さきほどは「Label1へぇ」とかいう風になっていたのが、ちゃんとした表示になっていると思います。
 

 
 
 このようになれば成功です。
 もしもエラーが出た場合は、大至急、コードが間違っていないか、そしてオブジェクトIDが変更されていないか、などを確認して下さい。

 
☆ ボタンを押したときの処理

 それでは、いったんプログラムを終了して、今度はボタンを押したときの処理を追加してみましょう。
 デザイン画面を表示させ、そして「へぇ〜」ボタンをダブルクリックします。
 
 すると、例によって、こんな表示が出てくると思います。

Dim Hee As Integer

Private Sub Command1_Click()
End Sub
 
Private Sub Form_Load()
  Hee = 0
  Label1.Caption = Hee
End Sub

 今度は、この青色で囲まれた縄張りに、「Command1ボタン(へぇ〜ボタン)」が押された時の処理を追加していきます。
 以下のようにプログラムを書いて下さい。いつも通り、書くのは黒字の部分だけで結構です。

Dim Hee As Integer

Private Sub Command1_Click()
  
Hee = Hee + 1
  Label1.Caption = Hee
End Sub
 
Private Sub Form_Load()
'  (以下省略)

 これが、「『へぇ』を1つ増やす」という処理の全貌です。
 1つづつ詳しく見ていきましょう。

Hee = Hee + 1

 変数Heeの中身を、1増やせと言う意味です。
 現在、変数Heeの中にはゼロが入っていますから、この文は
 
「Hee = 0 + 1」
 
 と同じ意味になります。
 そしてその結果、Heeの中身は1になります。
 
 そして、もう一度「へぇ〜」ボタンが押されたら、今度は
 
「Hee = 1 + 1」
 
 という意味になり、Heeの中身は2になります。そして以下、「Hee=2+1」「Hee=3+1」‥‥と続き、「へぇ」の数字はどんどん増えていくわけです。

Label1.Caption = Hee

 さきほどと同じ、Label1のCaptionをHeeの値に書き換える命令です。
 そして用が済んだら、縄張りはこれで閉じられます。

End Sub

 そして、実行してみて下さい。
 ボタンを押すたびに数字が増えていけば大成功です。
 
 

プログラムの日本語訳

Dim Hee As Integer

Private Sub Command1_Click()
   Hee = Hee + 1
   Label1.Caption = Hee
End Sub
 
Private Sub Form_Load()
  Hee = 0
  Label1.Caption = Hee
End Sub

日本語訳

あらかじめ、「Hee」という、Integer型の箱を用意しておきなさい。
 
「Command1」ボタンが押された時は、以下の処理を実行しなさい。
  変数「Hee」の中身を、1増やしなさい。
  Label1に、Heeの中身を表示させなさい。
「Command1」ボタンが押された時の処理は、ここまでです。
 
一番最初にフォームがロードされた時に、以下の処理を実行しなさい。
  変数「Hee」の中に、ゼロを代入しなさい。
  Label1に、Heeの中身を表示させなさい。
フォームがロードされた時に行う処理は、ここまでです。

 以下、執筆中です‥‥


[次のページへ/目次に戻る