GO BACK

Visual Basic教室 その2


「基本文法を覚える」


■コントロールのプロパティを利用する


 では、Visual Basicの基本的な文法というか、言語の基本を少しずつ覚えていくことにしましょう。まずは「コントロールのプロパティの使い方」から。

 難しそうな文法の前に、いきなり「コントロールのプロパティ」が登場したのにはわけがあります。変数など知らなくてもプログラムは書けるけど、コントロールの使い方を知らないとVisual Basicのプログラムは書けないからです。Visual Basicに関しては、何よりも重要なのは「どうやってコントロールを使うか」であると思うのです。

 では、プロジェクトを作って実際に簡単なコントロールのプロパティを操作してみましょう。第1回講座の最後に作ったものをそのまま作り替えてもいいでしょう。

1.まず、コントロールを作成します。用意するのはCommandButtonが1つと、TextBoxが1つです。TextBoxは、テキストを書き込むためのコントロールで、ツールボックスの上から2段目の右側にあるアイコンです。先に作ったプロジェクトを利用する場合は、ボタンはそのまま先ほどのを使って下さい。新たに作ることはありません。

2.コードウィンドウを開き、ボタンのコードを以下のように書き換えて下さい。

Private Sub Command1_Click()
  Str1 = Text1.Text
  MsgBox "あんたは「" & Str1 & "」と書いたね?"
End Sub

 以上で完成です。では、プロジェクトを実行してみましょう。そしてTextBoxをクリックして、適当なテキストを書き込んでからボタンを押してみて下さい。画面に入力したテキストを使ったメッセージが現れますよ。

 いかがです、思ったより簡単にコントロールのテキストが利用できることがわかりますね? それというのも、TextBoxに書かれたテキストがプロパティとして簡単にコード内から利用できるようになっているからです。――今作成したサブルーチンのコードを見てみましょう。


Str1 = Text1.Text


 まず、こんな命令を実行していますね。これは「Text1のTextプロパティを変数Str1に入れる」という働きをしていたのです。

 この1行で、「コントロールの値の取り出し」と「変数への代入」という、プログラミングでもっとも重要なものが2つも使われています。

 まず、コントロールのプロパティについて説明しましょう。ここで使われている「Text1.Text」というのが、TextBox1に書かれたテキストを示すプロパティだったのです。Text1は作成したTextBoxの名前、そして「Text」が書き込まれたテキストを示すプロパティというわけです。コントロールのプロパティを利用する場合には、このように、


《コントロール名》.《プロパティ名》


――という具合に、コントロールの名前とプロパティ名をピリオド(.)でつなげて記述します。

 ちなみに、最初の内よく間違えてしまうのが「コントロールの名前」です。コントロールを作成すると、自動的にそれに名前が割り当てられます。作成したTextBoxをクリックし、プロパティウィンドウをよーく見て下さい。一番最初に(オブジェクト名)という項目があるはずです。これが、コード内におけるこのコントロールの名前なのです。これは通常、作ったコントロールの名称と番号を組み合わせて割り振られます。CommandButtonなら「Command1」「Command2」という具合ですし、TextBoxなら「Text1」「Text2」という感じになるわけです。

 もちろん、この(オブジェクト名)という項目を書き換えてコントロール名を好きなものに変更することもできます。ただし、サブルーチンの中からコントロールを利用する場合、全てその名前で認識されますから、コードを書いた後で勝手にコントロールの名前を変更してしまうと、コントロールがわからずエラーになることもありますので注意して下さい。




■変数と演算記号について


  さて、もう一つの「変数」についても覚えておきましょう。変数とは、「値を一時的に収めておく入れ物」です。プログラミング言語では、必要な値をまず変数に収め、変数同士を計算したりして使います。

 この変数の使い方は実に単純。変数として使いたい名前にイコール(=)を使って何かの値を代入すれば、その瞬間に自動的に変数が作成され、そこに値が収められます。例えば、


X = 100


こんな具合に実行すると、自動的にXという名前の変数が作成され、そこに100が代入されます。非常にわかりやすいですね。

 多少プログラミングをしたことのある人なら、こんな疑問を持つかも知れません。「なるほど、簡単なのはわかった。しかしこれでは、このXという変数がどんな型なのかわからないではないか?」と。

 多くのプログラミング言語では、変数に「型(タイプ)」が用意されています。型というのは、値の種類です。プログラミング言語では、様々な種類の値を利用します。例えば、整数だとか、テキストなどですね。これらは、プログラミング言語の中では別のものとして明確に区別されています。

 例えば、整数の値をテキスト型の変数に収めたりはできませんし、小数の変数と整数の変数をいっしょに計算したりできなかったりすることが多いのです。この「変数の型」というのが、実に厄介なんですね。

 ところが、Visual Basicでは、この「変数の型」がないのです! 変数に収めた値が数字だろうが文字だろうが全く区別なく扱えるようになっています。こんなことができる言語は他にあんまりないんですよ。

 …秘密は、Visual Basicに用意されている特別な変数「バリアント」にあります。実をいえば、Visual Basicにもちゃんと変数の型があるのです。ところが、上のようにいきなり値を変数に代入して変数を作ると、それは「バリアント型」という特別な型の変数になるのですね。

 このバリアント型というのは、「何でも収められる万能の型」なのです。数字でも文字でも関係なく収めることができますし、バリアント型同士であれば中身に関係なく演算などすることができます。(といっても、計算ができる値であれば、ですよ。テキストをかけ算したりはできませんよ(笑))

 もちろん、場合によってはきちんと変数の型を宣言して使う必要があるケースもあるでしょう。そういう時は、


Dim X As Integer


このように「Dim 変数 As 型名」という形であらかじめ変数を宣言しておけば、その型の変数として作成されます。が、とりあえず当分の間はそんな必要はないでしょう。バリアント型だけで十分なはずです。ですから、「型なんてよくわからない」という人は、「そいういうものもある」とだけ覚えておけば今は大丈夫です。ですから、ここでは細々とした型についての説明はしません。

 さて、それでは変数で計算などをする場合はどうやればいいのでしょう? これも実は単純で、イコールで値を代入するとき、右辺に式をそのまま書いてやればいいのです。


X = 123 + 456 * 7


 例えばこんな具合にすれば、「123 + 456 * 7」という計算式の答え(ええと、いくつだ?)が変数Xに収められます。

 「そんなんでいいのか? 変数の名前はどうやってきめるんだ?」と思う人もいるでしょう。名前は、とりあえず半角の英数字による1単語であればなんでもかまいません。が、Visual Basicで使われるコントロール名や命令、プロパティ名などは使わないようにしましょう。といっても最初の内はよくわからないでしょうが…。

 これはあくまで私個人のやりかたですが、収める値がわかるような名前をつけるのがいいでしょう。文字を入れるのであれば「Str1,Str2,Str3…」というように(StrはStringの略)、数字であれば「Num1,Num2,Num3…」(NumはNumberの略)なんて具合にしておくといいでしょう。また、重要な変数などは、日本語をそのままローマ字にしたものを使うとよいです。「KOTAE」「GOUKEI」「KAISUU」なんて具合ですね。

 演算に使える記号は、四則演算は「+−*/」となります。テンキーにある記号そのままですね。ただし、ちょっと注意したいのは割算です。/記号だと、小数以下まで計算した値になります。もし「端数は切り捨てたい」という場合には、¥記号を使って下さい。例えば、「X = 10 \ 3」とすれば「3」が代入されるわけです。

 また、余りだけを得たいという場合もあるでしょう。その場合には、「mod」というものを使います。例えば、「X = 10 mod 3」とすると「1」が得られるのです。ちょっと面白いですね?

 以上は数字の計算ですが、文字の場合も計算(?)記号があります。それは「&」というものです。この&を使うと、2つの文字を1つにつなげることができます。例えば、「X = "ABC" & "XYZ"」とすると、Xには「ABCXYZ」というテキストが収められます。

 先のサブルーチンのMsgBox命令を思い出してみましょう。


MsgBox "あんたは「" & Str1 & "」と書いたね?"


 こんな具合になっていましたね? これはつまり、テキストと変数Str1を1つにつなげてMsgBoxで表示していたというわけなのです。このように&を使えば、いくつもの文字をひとまとめにして扱えるのです。

 これで変数についてはごく簡単にですが理解できたと思います。が、皆さんの中には「いわれた通りに命令を実行したけど、変数のところエラーが起きるぞ?」という人もいるかも知れません。

 Visual Basicには、変数の宣言をしないと変数を使えないようにする機能があります。これを知らない内にONにしてしまうと、変数を使うときは全て先の「Dim …」という宣言文を書かないといけないようになります。

 もしそのような場合は、「ツール」メニューの「オプション」を選んでみてください。Visual Basicの細かな設定をするダイアログが現れます。ここで「編集」タグにある「変数の宣言を強制する」という項目がチェックされていないか見て下さい。もしチェックされていると、全ての変数宣言をしないと変数が使えなくなります。これをOFFにして使って下さい。

 また、この設定は、次回のプロジェクトから使えるようになるもので、現在開いているプロジェクトの設定を変えることはできません。ですから、まずこの項目を確認してからプロジェクトを作るようにするといいでしょう。




■条件分岐について


 さて、これでコントロールと変数は使えるようになりましたが、これだけでは単純に「書いてある命令を順番に実行する」というだけのことしかできません。そのときの状況に応じて実行する命令を変化させる「制御構文」というものを覚えると、プログラミングの幅がぐっと広がります。

 制御構文には大きく2つのものがあります。「条件分岐」と「繰り返し」です。まずは条件分岐から説明しましょう。

 条件分岐とは、その名の通り、条件に応じて命令を分岐させ、別の命令を実行させる機能のことです。このもっとも代表的なものは「IF文」というものです。これは、条件として設定されている式をチェックし、それが正しい場合と正しくない場合で別の命令を実行する構文です。

 この構文は、いろいろな書き方ができますので、一通りの書き方をあげておきましょう。


●式が正しいとき、命令を1つだけ実行する●

If 《条件式》 Then 《実行する命令》


●式が正しいときとそうでないときでそれぞれ1つだけ命令を実行する●

If 《条件式》 Then 《正しい時の命令》 Else 《そうでない時の命令》


●式が正しいとき、複数の命令を実行する●

If 《条件式》 Then
《実行する命令1》
《実行する命令2》
……
End If


●式が正しいときとそうでないときでそれぞれ複数の命令を実行する●

If 《条件式》 Then
《正しい時の命令1》
《正しい時の命令2》
……
Else
《そうでない時の命令1》
《そうでない時の命令2》
……
End If


 なんかややこしそうになってきましたねえ。まあ、実行する命令はわかるとしても、「条件式」って何だ?と思っている人もいることでしょう。この条件式が、If文を使いこなすポイントなのです。

 条件式は、「正しいか正しくないか」をチェックするための式です。これは、基本的には等号/不等号を使って2つの値を比べる式だと考えて下さい。

 例えば、「If X = 10 Then …」などという具合にすれば、変数Xが10のときとそうでないときで異なる命令が実行できるようになります。「If Y > 0 Then…」とすれば、変数Yが0より大きいか、それとも0以下かで別の命令が実行できます。このように、等号や不等号を使って正しいかどうかの式は書かれます。

(※この他にも、「ONかOFFか」「正しいかそうでないか」を示す「真偽値」という値を利用した式が使われることもあります。これについてはそうしたプロパティが登場したところで触れることにします)

 では、簡単な例をあげておきましょう。先に作成したプロジェクトをそのまま利用することにします。コードウィンドウを開き、ボタンのサブルーチンを以下のように書き換えてみて下さい。

Private Sub Command1_Click()
  Str1 = Text1.Text
  If Str1 = "" Then
    MsgBox "何か書いてよ!"
  Else
    MsgBox "あんたは「" & Str1 & "」と書いたね?"
  End If
End Sub

 これは、TextBoxにテキストが何も書かれていないときには文句をいうようにしたサブルーチンです。何か書いてあれば従来と同じようにメッセージが現れますが、何も書いてないとお小言をちょうだいします。




■繰り返し構文について


 次に、繰り返し構文について説明しましょう。この構文はいくつかの種類がありますが、もっとも多用されるのは「For 〜 Next …」構文というものでしょう。これは、以下のような形をしたものです。


For 《変数》=《初期値》To《終了値》
……繰り返し実行する命令……
Next


 なんかこれもまた複雑そうですねえ(笑)。このForによる繰り返し構文は、変数を使って何回目から何回まで繰り返すかチェックしながら動くようになっているのです。この初期値と終了値に繰り返し始めと終りの値を入力すると、その値をチェックしながら繰り返します。例えば、


For i = 1 to 5


このようなFor構文を考えてみましょう。この場合、まず最初にVisual Cafeは変数iに1を代入して繰り返しに突入します。そして終りまでいくと再び繰り返しの最初に戻り、変数iを1増やします。そして繰り返し部分を実行して最後までいくとまた最初に戻ってiを1増やします。…そして何回かの繰り返しの後、iが5になったら、そのまま構文を抜けてNextの先へと進むのです。

 このForで使う変数は、慣例的に「i」からのアルファベット1文字とするのが一般的です。最初が「i」で、またForが出てきたら「j」「k」…という具合に使うんですね。別に他の変数でもいいんですが、「この構文で使う変数はこれだ」と決めてしまった方がコードもわかりやすくなりますから、なるべく慣例通りにしましょう。

 なんかこのFor構文はややこしくて直感的にわかりにくいかも知れません。まあこういうややこしい構文は実際にコードを書いて試してみないとうまくイメージできないものです。さっそくサンプルを作ってみましょう。――先のプロジェクトで、ボタンに書いたサブルーチンをまたまたこんな具合に書き換えてみましょう。

Private Sub Command1_Click()
  Num1 = Text1.Text
  Total = 0
  For i = 1 To Num1
    Total = Total + i
  Next
  MsgBox "合計は……" & Total
End Sub

 そしてプロジェクトを実行します。これは1から任意の数字までの合計を計算するサブルーチンです。TextBoxに適当な整数を入力してボタンを押してみて下さい。1からその数字までの総和が計算されますよ。例えば「5」と入力すると、1+2+3+4+5=15が表示されます。いろいろと数字を入力して確かめてみましょう。

 さて、これで一応、プログラミングの基本文法はおしまいです。「えっ、たったこれだけ?」と思うかも知れません。けれど、コントロールのプロパティ、変数、条件分岐、繰り返しがわかれば、これだけでちょっとしたプログラムは作れるようになってしまうんですよ。後は、いろいろと試しながら少しずつ覚えていけばいいんです。まずは、とにかく何か作れるようになったほうが楽しいでしょ?


GO NEXT


GO HOME