Last Update : 1999/09/29 17:39

SHIROのVB講座
『超』初心者編 第2日目

前回は、とにかく意味がわからなくても、とりあえずexeファイルを作った。
今日は、意味がわかる範囲でプログラムコードを書いてみよう。

一般的な業務アプリケーションとは、テキストボックスにユーザが入力したものを、プログラムで判断したりファイルを読み書きしたりして、処理を行っているものが多いが、実に、たったこれだけのコトを行っているに過ぎない。

実際に業務アプリケーションを作るときには、入力された情報を判断したりするときの『条件』を設定・設計するわけだが、これが非常に多岐にわたったり、ややこしかったりするので、仕様を決める段階で、殆どアプリケーションの質が決まってしまう。

しかし、これはSE(システムエンジニア)の仕事であり、プログラマは通常そこまでの決定権も無ければ責任も無い。VBアプリケーションの多くは、単に画面をこしらえ、単に与えられた(設計時に決められた)条件で処理すればよいわけで、非常に低レベルの知識だけでも十分プログラムが出来てしまうのである。逆に言えば、このユーザが入力した情報を判断する基本的なプログラムの仕方・ファイルの入出力の方法を覚えるだけで、立派な職業VBプログラマになれるのだ!!

というわけで、今日は多くのアプリケーションの基本となる情報の入り口を学習して行こう。
また、コードを記述する上で最も基本的な事項も同時に学習する。


ユーザが情報を入力するときに最も多く使われるのは、テキストボックスだろう。このテキストボックスをフォームに貼り付けるには、下のように操作すればよい。

1)クリックして選択しておく 2)ドラッグアンドドロップして、場所と大きさを指定する。

また、その横などにもうひとつテキストボックスを貼り付けよう。さらにボタンも貼り付けよう。とりあえず、下のようになっただろうか。

やりたいことは、とりあえず左の「Text1」という名前のテキストボックスにユーザが何か入力したと想定して、右の「Text2」にその情報をコピーするという、(これまた実用性の無い)学習用のプログラムの作成だ。

上の図の状態で(まだコードは何も書いていない状態)で、とりあえず右三角ボタンの実行ボタンを押して、実行させてみる。

そして、何か適当に文字を入力したり、ボタンを押してみたりしよう。

・・・・当然、コードが何も書かれていないわけで、何を入力しても、どんなに頑張ってボタンを連打しても、何の反応も無い。虚しい・・・。(笑)

そこで、ストップボタンを押して(実行状態から停止状態にしておいて)、いよいよコードを書いてみよう!

(→実行時は、コードを見ることは出来るが、変更したり新しく書きこむことが出来ない)

 

1)まず、先ほど貼り付けたボタン(VBでは「コマンドボタン」コントロールと呼ぶ)をダブルクリックして、

Private Sub Command1_Click()


End Sub

と表示された画面にしよう。

2)そして、この2行の間に、コードを書き入れるわけだ。

ここでやりたいことは、テキストボックス『Text1』の内容を『Text2』にコピーすることだ。
コードの表現形式は、イコール記号を使った代入文で右から左方向へ代入するという手法を取る。
VBなどに代表されるBasicに限らず、多くのコンピュータ言語は、代入文が必ずあるといって良い。

代入文は、基本的にイコール記号の右側(右項)の式の値(結果)を、イコール記号の左側(左項)に代入する。

Text2.Text = Text1.Text

この1行を記述するわけだが、意味としては、『イコール記号の右側、つまり、Text1という名前のコントロール(オブジェクト)のTextプロパティーの値を、Text2のTextプロパティーに代入する。』というのが厳密な意味だ。

イメージとしては、

代入されるもの ← 代入する値を表す式

といったところか。

「プロパティー」とは、各コントロールやオブジェクトの『設定値』のことである。具体的には、フォーム中の相対位置(.Top.Left)や大きさ(.Height.Width)、オブジェクト名(.Name)などがある。

またテキストボックスコントロールにはさらに次のような固有のプロパティーがある。代表的なものとして、「Fontプロパティー(.Font)」や「色のプロパティー(.ForeColor .BackColor)」、「テキストの内容プロパティー(.Text)」、「境界線の種類(.BorderStyle)」、などがある。

またラベルコントロールやコマンドコントロールにも「表示内容をあらわすプロパティー」があるが、これは『 .Caption 』プロパティーで、プロパティーの名前が違うので注意しよう。

この他にもそのコントロール固有の独特なもの、マニアックなプロパティーもある。こういうものは、プロパティーシートをクリックして、F1キーを押そう。するとヘルプの該当する項目が自動で表示されるので(便利だ!!)、これを参考にしながら学習すると良い。

では、早速実行してみよう。左のテキストボックスに何か入力して、コマンドボタンを押したら、しっかりと右のテキストボックスに内容がコピーされただろうか?

成功したら、今度は、先ほどのコードを以下のように少し手直ししてみよう。

Text2.Text = Text1.Text & Text1.Text

これは、何をやっているか解るだろうか?!

まぁもし、コードを見ただけで解らなくとも、実行して動作を確認すれば解るだろう。(笑)

他にも以下のようなものを試してみよう。いろいろ試せば、代入文の右側(右項)の「代入する値を表す式」の作り方(→法則)がわかるだろう。

Text2.Text = "とりあえず、" & Text1.Text & "です!!"
Text2.Text = Text2.Text & "さらに"

上の2番目の例のコードはどう考えても変だ。数学的にとらえれば、イコールの右側と左側で同じ値ではないので、エラーになるはずだが、これも実行させると面白い。ちゃんと動くぞ。

つまりイコール記号『=』は、この左側にあるものに「単に代入する」ことしかあらわしていないことがわかる。別に数学的に等しくなければならないわけではない。
これをイメージ的に表現すれば

『現状のText2の内容と「さらに」という文字列を、新しくText2の内容とする』

ということになるだろう。
何回もコマンドボタンを連打すれば、テキストボックスの内容は、

『最初の内容 + さらにさらにさらに・・・・・』

となるはずである。途中でText2の内容を書き換えても面白いかもしれない。

とにかく、ここで考え得る限りのいろいろなバリエーションを試して欲しい。よくプログラムやコンピュータ学習の場では『習うより慣れろ』という言葉を耳にするが、これをプログラムの場合ならば特にとことん実践するのが、上達のコツ。

エラーになってもメゲてはイケナイ。

なぜエラーになったのかを考えることも大切なことだ。正常に動くための条件を見つけ出す作業(デバッグ作業という)は、プログラムを組むときよりも、場合によっては時間がかかる。

センスと根気の必要な作業だが、実はプログラマには目的にあったプログラムを早くきれいに組むということよりも、いかにすばやく的確におかしなプログラムの個所・原因を突き止めることが出来るかが要求されているのだ。優れたプログラマ程、デバッグは速く、適切だ。

デバッグのセンスが磨かれてくれば、プログラムを書いている最中に『ん〜、このコードを書いたら、なんか後で問題になりそうだな・・・・。別な方法を検討しよう・・・。』と気づくから、まさに高度な危険警報装置を身につけることと同じになる。だから、エラーを怖がったり、避けたりしては駄目だ。失敗は成功の元というが、まさにその通りなのだ。

ついでに、面白いコードを追加することにしよう。ここでは、黒い文字の個所を追加しよう。

Text2.Text = Text1.Text
Command1.Top = 0

そして早速実行してみよう。どうだろうか。このようにコントロールの位置をコードによって記述することが出来る。

また、以下のように変更してみると、さらに面白いかもしれない。

Text2.Text = Text1.Text
Command1.Top = Command1.Top + 100
Text1.Top = Text1.Top + 300
Text2.Left = Text2.Left + 100

このコードはある程度ボタンを押したら、一度実行を取りやめなければ、どこか彼方へ行ってしまい、とんでもないことになる。
まぁ致命的ではないので、どのようにとんでもないことになるのか試してみてもよいだろう。(情けない結果になってしまうぞ。(笑))

最後に、コマンドボタンのプロパティーで、Captionというのがあるので、これを『変更』などと変更したり、フォームのプロパティーで、やはりCaptionというのがあるので、これを『実験2日目フォーム』などとしたり、色を適当に変更してみるのも良いだろう。

▲ヤバイっ、極めて悪趣味になってしまった・・・。(笑)

今日のまとめ:

  1. 代入文を使って、プロパティーを設定する。
  2. プロパティーとは、コントロールの設定値のこと。
  3. とにかく、いろいろなことを試せ。
  4. エラーを恐れるな。デバッグ作業も修行のうち。