<HOME <お願い事項 <Access2000 TOP <Access97 TOP <サイト内検索 | ||
Ac2002--VBAの沼 > 「値の代入」の練習 | ||
1 2 3 4 |
ではでは、ここからはしばらくの間、フォームの中でちょこちょこっと動かすプロシージャを作りながら、VBAというものについてもう少し理解を深めていきましょう。
今回は「値の代入」ということについてお話をしていこうかなと思ってます。
VBAの土台となっているBasicというプログラミング言語は、とにかく「値の代入をする」言語です。
ボール投げみたいに、値をあっちからこっちへ、こっちからそっちへと渡しながら処理を進めていきます。
とにかく値の代入ばっかしやってます。
なので今回は、「どっかにどっかの値を代入する」っていうことについて、つついてみたいと思います。
「値の代入」ということに慣れるのが今回の目的ですが、併行して「VBAを使うに当たって必要なこと、基本的な考え方」などについてもこまごまお話していきます。非常に単純でばかばかしい作業がt続きますが、この章で細かいことに慣れてしまいましょう。
じゃあ、フォームに、テキストボックスとコマンドボタンを一個ずつ作ってください。
前回作ったフォームがあればそれでもよいですし、新しく作ってもOKです。
コマンドボタンは、前作ったやつを使っちゃってもいいし、新しく作ってもよいです。
わたしのはこんな風になりました。
まったく同じじゃなくてOKですよ。テキストボックスと、コマンドボタンがひとつずつあればOKです。
このテキストボックスはいわゆる「非連結」のテキストボックスと言うものです。非連結って書いてありますよね。
要は、テーブルやクエリのフィールドとか、そういうもんとぜんぜん結びつきを持ってないテキストボックス、という意味です。
いちおう、目安としては、テキストボックスの「コントロールソース」プロパティが空っぽの場合は、まあ、そうだな、非連結って考えていいかも。
ちょっと横道にそれますが。。。
非連結ではありますけれど、フォームビューに切り替えれば、ここに値を入力できます。入りますよね。
10000って入力すれば、なんか「フォームに入力できた」みたいな感じになります。
でも、非連結ですから、ここに入力したこの数字は、このフォームを閉じたらどこにも残りません。
これが理解できてないと、MS-Accessの習得は非常にきついですよ。データを残したいのなら、どうするんでしたっけ???
データを収めておくオブジェクトは、テーブルですよね。
このフォームが、なんかのテーブルを元にしたテーブルで(レコードソース欄にテーブル名があって)、このテキストボックスのコントロールソース欄にそのテーブルの中のフィールドいずれかが指定してある場合は、ここに入力した数字は、テーブルの中に残っていくわけです。
こういうのも、しっかり理解しておいてくださいよ。「非連結」ってどういうことなのかわからない状態でVBAのコードばっかり覚えたって、あんまり役に立たないですからね・・・。VBAのAはApplicationのAです。MS-Accessの中のフォームやテーブルといった各種オブジェクトを操作するための言語、ですからね。VBAってのは。。。。フォームやテーブルなどのオブジェクトに対する理解や知識があってこそ、VBAの知識が役に立つのです。そのことを忘れないでくださいね・・・。
んでは本題に戻ります。
まずは簡単な例から・・・。
コマンドボタンをクリックしたら、100って数字を出すようにしましょう。
え?意味がわかんない?そりゃまあ、超簡単な例ですから、ピンとこないのも無理はないんですけど・・・。
とにかく、いっしょにやってみてください。これがすべての基本ですから。
一応念のために、テキストボックスの名前、確認しておいてください。
コントロール(テキストボックスやコマンドボタンなど、フォーム上に置いてある「モノ」の総称)名をしっかり確認しておくことも、VBAの基本中の基本です。
では、コードビルダを起動しましょう。
コマンドボタンのクリック時のイベントとして作りますので、ボタンのプロパティの「クリック時」のところをクリックして・・・。
ここまでの流れは、OKですか???
わたしのはこんな感じになりました。皆さんの画面はこれと同じじゃないと思いますけど、違うところがある場合は・・・
なんで違うのか、は、もうお分かりですよね?
ではここに、
テキストボックス=100
という処理を作ります。
テキストボックスの名前を指定するんですけども、ここで、書き方のルールをご説明します。
ここは、このフォーム専用のPrivateプロシージャを書くところなので、テキストボックスの名前だけでも、意味は通じます。
ですが、いちおう、ごくごく一般的な書き方としましては、
どこのフォームのなんというテキストボックス
と、フォームの名前から書く必要があります。
今回はPrivateプロシージャなので、 Me と書くことで、このフォームであることを表します。
大文字小文字はどっちでもいいですが、半角で書きます。
フォーム名とテキストボックス名の間は、つなげないで、!(半角のびっくりマーク)で区切ります。なので、
Me!テキストボックス名 = 100
と書きます。これで、「わたしのテキストボックスに100という数字を代入する」という処理を命じることになります。
テキストボックス名は・・・さっき確認しましたですよね。
カーソルを他のところに移動させたりすると、meのMが大文字になり、式の中に適度にスペースが入って微妙な変化が見られると思います。
これで、OKですよ。
んじゃ、いちおうコンパイルして・・・。
フォームのほうに戻りましょう。左上のボタンで、戻ることができますよね。
フォームを保存して・・・・一旦閉じて開きなおしたほうが雰囲気つかみやすいかも。
コマンドボタンをクリックしてみましょう。
テキストボックスに数字が出ます?
え?何回クリックしても100のままだって?
当たり前じゃありませんか。その都度100が入るようにしてるんですから。
2回クリックしたって、2回目のクリックのときにも100って代入してるんです。
え?なんで200にならないのかって?なりませんよ。コンピュータはそんなに気が利くやつじゃありませんよ。
言われたことしかやらないんだから。
2回目のクリックのときに、200になるっていうのは、「テキストボックスに100を代入する」のではなくて、「テキストボックスの値に100を足す」っていう処理を作んないといけないですよね。これは、ちょっと後でやりましょう。
「なんで?それってどう違うの?同じことじゃん??」って首をひねっているあなた!!!違いますよ。違いを、しっかり理解しといてくださいよ。
なんで、2回クリックして200にならないのかわからないと、VBA習得はかなりキツイです。
じゃあ次に、掛け算でもしてみようかな。もう一度、VBEを手前に呼び戻します。
閉じていなければ、画面下のタスクバー上にまだタスクがあるはずでしたよね。
もし、閉じているならば、もう一度、コマンドボタンのクリック時のイベントプロパティから、コードビルダを開けばOKです。
こういう作業の段取りというか、つながりがスムーズにわかるようになればしめたもんです。
今まで覚えてきたことをおさらいしつつ、VBEのウィンドウをもう一度見てください。
25×42の答えが出るようにしてみましょう。
こんな感じ。掛け算は、半角のアスタリスクマークです。
一応コンパイルしてみて、フォームのほうに戻って、フォームビューに切り替えて、コマンドボタンをクリック!!!
出ます?
そしたら次に、数字じゃなくて、文字を出してみましょうか。
こんな感じ。え?パン粉ってなんなのかって?パン粉知らないんですか???おいおい大変なこったよそれは。
ほら、コロッケとかとんかつの周りにくっついてる、あのサクサクしたやつ・・・
え?そんなことを聞いてるんじゃないって?
はー。よかった。パン粉を知らない人がいたらVBAなんかやってる場合じゃないよって思ったんで、よかったです。
じゃあ、先に進みますよ。一応コンパイルしてから、フォームに切り替えて試してみましょう。
あれ???何もでないぞ???
文字を扱う場合はデスね。半角のダブルコーテーションで囲みます。
出ましたでしょう?
数字や半角のアスタリスクマークは、コンピュータにわかるものなんですけど、ひらがなとかカタカナとか漢字は、コンピュータにはわからないんです。
本来エラーになってもおかしくないようなことなんですけどね。。。。
Access2002のVBAだと、エラーにならずにだんまり決め込むようになってるみたいですね。
なので、今回のように、「パン粉」とそのまんまテキストボックスに代入したい場合は、ダブルコーテーションで囲んでやります。
ダブルコーテーションで囲んであるものについては、コンピュータは深く考えず、そのまんま扱ってくれるんです。
こうした記号の役割はおいおいお話をしていきますので(というか、繰り返しいろいろ作ってるうちに、多分お分かりになると思います)、今回は真似っこしておいてください。