<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000--VBAの小屋>「イベント」に慣れる
   1 2 3 4 5



んじゃ、もうひとつ・・・。

テキストボックスの色を変えるプロシージャを作ってみましょう。ええと、今度はどんな「きっかけ」にしましょうかね。
テキストボックスをもうひとつ作りましょうか。わたしのは「テキスト5」って名前になりました。
フォーム、狭いですけど、今日は練習なんでフォーム自体サイズを広げるまでもないでしょう。今まで作ったコマンドボタンとかにちょっとどいてもらって、スペース作ってあげてくださいね。

じゃ、せっかくテキストボックスがふたつあるので、
テキスト5に「赤」って入力してEnterキーを押したら、テキスト1の色が赤くなるようにしてみましょうか。

まずは、どこにどういうことを書けばいいのか、作業の段取りと大体のイメージを頭の中に描いてみてください。
で、どういう情報が必要になるか、ちょっと考えてみてくださいね。



処理は、テキスト5の「更新後処理」にでも書けばよさそうですよね。で、とりあえず、「赤」って入力されたときと、そうじゃないときの2択って考えて、さっきのIf文でなんとかなりそうです。

もし、テキスト5の中身が「赤」だったら、

テキスト1の色を赤に

それ以外の場合は

(どうしましょう?白くしますか?)

もしもは終わり

それ以外の場合は別に考えなくてもいいんじゃないの?というのが、大きな落とし穴になったりします。
わたしたちにとってみたら、何も指示しないときは白い色に戻るのがあたりまえじゃん、って感じになりがちですけど、コンピュータにはそんなことわかりません。
いったん赤くなったテキスト1は、ずーっとずーっと、いったんフォームを閉じてもう一度開くまで赤いままです。まったく気が利かないですよねぇ。いちいち指示してやらないといけないんですから。

テキスト5の中身が赤だったら、っていうのは、Me!テキスト5 = “赤” でオッケーです。Me!テキスト5 = 赤 じゃわかってくれないですからね。赤っていう言葉そのものを判別の材料にするわけですから、””で囲みます。半角のダブルコーテーションですよ。


で、テキストボックスの色、なんですけど・・・。
これもプロパティで設定するんですよね。これも、他のコーナーでちょこちょこご紹介したりしてて解説がダブっちゃうかもしれませんけど、いちおう・・。

テキスト1の方のプロパティ、ちょっとだけ見てみてください。「背景色」っていうプロパティがありますよね。ここに数字が入ってると思います。
この数字が、「色」を表すコードなんです。右端の「ビルド」ボタンをクリックすると、色の設定のためのダイアログが出てくると思います。
今、「白」が選択されてる様子、おわかりいただけます?白は16777215なんですね。

ためしに、「赤」にしてOKしてみましょうか。そうすると・・・プロパティ欄、255になると思います。
他の色にもいろいろと変えてみてください。それぞれ、その色を表すコードがあるんです。
つまり、「テキストボックスの背景色プロパティに色のコードを代入してやれば」いいんですね。この色コードはそのままVBA内でも扱うことができるので、ダブルコーテーションなどで囲む必要はありません。そのまま代入してやります。


じゃ、とりあえず「白」に戻しておいていただいて・・・。

テキストボックスの背景色プロパティってどう書けばいいんでしょう??
それを調べるためには、「背景色プロパティ」のところにカーソルを置いた状態で、F1キーを押します。
ヘルプが出てきますよね。


と、なんか出てきますよね。BackColorって書くんですね。
確認できたらヘルプだけ閉じましょう。

Me!テキスト1. BackColor = 255
これで、テキストボックスの背景色が赤くなります。

材料はそろいましたね。じゃ、挑戦してみましょう!


わたしはとりあえずこんな感じになりました。

できたら、いちおうフォームを上書き保存して、フォームビューに切り替えてテストしてみましょう。
赤って入力してEnterキーを押したときと、それ以外の単語を入力してEnterキーを押したときとで、テキスト1の色がどう変わるか・・・。




If文でできるのは、色が「赤」か「それ以外」か、の2択ですね。
じゃ、もっと細かくやるには・・・。これもどっか他のコーナーと解説がダブるかもわかりませんが・・・Select Caseっていうのが使えると思います。
イメージとしては、

たとえば○○○を例にとってみたとして、

○○○が×だった場合、

  これこれこうして、

○○○が▲だった場合、

  これそれこうして、

○○○が□だった場合、

  どれどれそうして、

○○○が◎だった場合、

  それからそうして、

○○○がそれ以外の場合、

  どれどれどうして、

たとえ話は終わり

と、こんな感じになって、めんどくさくなければいくらでも分岐できます。
必要なければ一番最後の方の「それ以外の場合」というのは書かなくてもオッケーです。
だいたいのイメージはIf文と同じなので、すぐイメージできると思います。
書き換えてみましょう。

たとえば↑こんな感じ・・・これだと、よく見ると、If文の時とまったく同じ動きになるはずです。
で、どんどん選択肢を増やしていけばいいわけですよね。

しかしこうなると、いくらなんでも読みにくいですよねぇ・・・まあ、これはお好みですけれど・・・・
気持ちの問題ですけど、ちょっとだけスペースを入れるとか、Tabキーで左側を入れ子っぽくするとか・・・余分な文字や記号が入らなければ、左側がぴしっとそろっていなくても別にかまわないので、あとで見やすいようにちょいと工夫してみてください。



あと、半角のシングルコーテーションを入力すると、↓そこから右側は全部コメントとみなされて、無視されます。

ちょっと画面だとわかりにくいかもしれないですが・・・微妙に色が変わります。
誤って一番左端にシングルコーテーション入れちゃうと、その行無視されちゃってSelect文として成り立たず文法エラーとかややこしい状況になるんで、これだと、End Selectって行がないことになっちゃうんで(コメントになっちゃってるから)「Endがありません」みたいな冷たいエラーが返ってきちゃいます。

やたらうっかりコメントにしちゃわないよう、要注意です。色が変わるはずなので、わかりますよね。

コメント行をもっと派手な色にしたい、とか希望があれば、VBAのエディタのメニューバー[ツール]→[オプション]→[エディタの設定]で好きな色を選ぶことができます。でも・・・あんまり派手にすると返って見にくくなっちゃうこともありますから、この辺はほどほどに・・・。




さて、ここまでいかがでしょう。
このページでの目的は、何もコマンドボタンを非表示にするとかテキストボックスの色の変え方とかそういうことじゃないんですよ。
それは・・・おわかりいただけてますよね。
まず
 「イベント」という概念に慣れること。
 VBAのコードっていうのは、どこに書くのか
その辺の雰囲気に慣れていただくのが第一目的です。
これさえ押さえておけば、VBAのサンプルコードを載せているサイトとか書籍って結構ありますから、具体的な処理を作っていくところは何とかなると思うんです。ヘルプにも使用例みたいなのはいっぱい載ってますしね。