マクロでいこう! ~ Excel活用HomePage ~

VBAでラクしたい ~Part 2~

こちらのコーナーでは、VBAの使い方を中心にご紹介していきます。
作者自身の経験から書いておりますので、本とかとは違ったコトを
書いてるトコロもあるかもしれません。 そういう場合は、良さそうな方を信じましょう(^_^;
TOPVBAでラクしたい ~Part 2~ > 入力フォームを作ってみよう!!

入力フォームを作ってみよう!!

さてさて、今回からはいよいよフォームを使ってみようと思います。

#以前、書きかけて途中でSTOPしてしまったことへのリベンジの
#意味も込めて(^^;

ですので必然的にExcel97ユーザーの方々が対象とはなりますが、95ユーザーの
方にも是非ご覧いただければと思っています。
なぜなら、95の頃のフォームと違って97は格段に使いやすくなっておりますし、
ひょっとしたらこれを読んで97に乗り換えを考える方もいらっしゃるかなと(^^;

#Office2000も出ますが、それは置いといて・・・・

とりあえずカンタンなところから入ってみましょうということで、こんなサンプル
を考えてみました。ヽ(^-^ )

----------------*----------------*----------------*----------------*
フォーム名:お友達メモ
使用目的  :簡単な個人データを随時入力する
入力項目  :・氏名
            ・E-Mailアドレス
            ・誕生日

てな感じで(^^;)
入門編とはいえ、入力項目が1つではさびしいし、多すぎてもなんですので・・・

----------------*----------------*----------------*----------------*

では始めましょう。

まずは入力フォームを作る前に、データを記録するためのExcelワークシートを設定
しておきましょうか。

#とは言っても、項目名の列見出しを書いておくだけですけどね d(^-^;)

セルA1の位置に"氏名"
セルB1の位置に"E-Mail"
セルC1の位置に"誕生日"

と入力しましょう。

そして、フォームを起動するためのボタンを作っておきます。
これは"図形描画"を使って丸や四角を書いておけばOKです。
そうしますと↓こんな感じになりますね。
画面01

この画面が出来ましたら、今度は上のメニューから「ツール」→「マクロ」
→「Visual Basic Editor」と選択・起動します。

"UserForm1"とか書かれた真っさらなフォームが出現しましたでしょうか?

ここに入力用のテキストボックスを貼り付けてみましょう。

画面に"ツールボックス"は表示されていますよね?もし表示されていない
場合は「表示」→「ツールボックス」をクリックしてください。

そこに"コントロール"と書かれていて、何やら色々な形のボタンがあります
よね。これらをペタペタと貼り付けていって、処理を書いてやればOKなわけ
です。
テキストボックスは ab| とか書いてあるボタンがそれですね。
マウスポインタをボタンの上に持っていくと「テキストボックス」という
表示が出ます。同じように他のコントロールにもポインタを合わせて、それ
ぞれのコントロールの名前を確認してみるのもいいでしょう。

ここでは「テキストボックス」のボタンをクリックし、フォームの上で四角
を書きます。するとその場所にテキストボックスが出現します。
あとは図形をいじるのと同じように、位置を移動したり大きさを変えたりと
いうことはご自由にどうぞ。

テキストボックスを3つ配置しますと、こんな感じになりますね。
画面02

さぁ、これでいよいよVBAの処理を書くぞぉ! と進めてもよろしいのです
が、ここでもう1つだけ準備をしたいと思います。それは、

”適切なオブジェクト名をつける”

ということです。

今、貼り付けたテキストボックスやフォームをクリックし、横に表示されて
いる「プロパティ」の「オブジェクト名」を見て下さい。
「TextBox1」とか「UserForm1」とか表示されていますよね。
これはVB側で勝手につけたオブジェクト名であり、単に連番がふられた格好
になっています。

このまま使っても別に支障はないのですが、例えば入力項目が20個くらいあ
る場合どうでしょう?

TextBox6 とか TextBox20 とかいう名前から、何の入力項目なのか想像がつく
でしょうか?たぶんワケがわからなくなって、いちいちオブジェクト名をプロ
パティで確認されることだろうと思います。これではプログラムを書いていく
上で非常に効率が悪いですから、「最初から適切なオブジェクト名をつける」
ことを推奨いたします。

というワケで、

TextBox1についているオブジェクト名を TxtName
TextBox2についているオブジェクト名を TxtEmail
TextBox3についているオブジェクト名を TxtBirthday

に変更してみて下さい。

おや?と思われた方もいらっしゃいますでしょうか。そういう疑問を持つこと
は、とっても大事なことですよ(^^)

頭についている Txt って何? ってことですよね。

これは「プリフィックス(Prefix)」と言いまして、要は「オブジェクトの種類
を識別するための符号」です。これが付いていることで、このオブジェクトは
ラベルなのかテキストボックスなのか、はたまたフォームなのかっていうことが
一発で識別できるワケです。

代表的なものをサラっと挙げてみますと

Txt ・・・テキストボックス
Frm ・・・フォーム
Lbl ・・・ラベル
Cbo ・・・コンボボックス
Lst ・・・リストボックス
Chk ・・・チェックボックス
Opt ・・・オプションボタン

なんていうのがあります。

で、なんで大文字・小文字を混ぜて書いているかと言えば、例えば TxtName に
ついての処理を書く際に、txtnama とか打ってしまったとします。このような
名前のオブジェクトはありませんから、txtnamaはそのまま表示されます。
ところがこれを正しく txtname と打ったとすると、打った文字は TxtName と
自動的に表示されるのです。ほほ~('' ;) という感じですね。

この機能をうまく使えば、入力の段階でミスを発見することができるのです。


最後に、フォームのオブジェクト名も

FrmDataInput

に変えておくといたしましょう。


それでは次回までごきげんよぉ~(^^)/~


TOPVBAでラクしたい ~Part 2~
Copyright (C) 2006 マクロでいこう!. All Rights Reserved.