マクロの自動実行がいわゆるプログラミングであり、システムです。
普通の開発言語では、ひとつの作業に約500ステップ(行)ほどのプログラムを書きます。その塊を、組み合わせて、銀行などのオンラインも動いているのです。一般の会計ソフトでも10万行とか20万行とかになります。
そして、プログラムでは、そのプログラムをいつ動かすか、が重要なポイントとなります。
といっても、これは専門家が利用する開発言語でのこと、MSアクセスでは、考えられません。開発言語は、専門家が利用する言語を下級言語?、MSアクセスのようにユーザーが利用する言語を高級言語といいます。人間の言葉に近いほど高級という意味です。
ま、どっちでもいい話でしたが、高級言語であるMSアクセスでも、それを実行するタイミングを決めることは、簡単ではありません。
MSアクセスでは、マクロ実行のタイミングを予め用意してあり、そのタイミングでマクロを実行することになります。このタイミングは、わかりにくいと思います。
1.マクロの起動は、フォームのフイルド、テキスト項目などに、設定することが出来ます。
2 マクロ内にサブマクロとして実行(マクロの実行アクション)することが出来ます。こ れは、いくつか重ねて実行できます。
- 今回は、1のフォームでマクロの起動の実験をします。
-
- フォーム項目のプロパテイ画面は上記のとおりですが、最後のほうに、マクロの起動を掛ける項目が、15個あります。(更新前処理かたキー解放時まで)
この15のいタイミングを正確に使いこなせる人は、ほとんどいないと思います。私も、使ったことがないものがあるからです。
ちょっと言い過ぎかも…。
- マクロの起動を実験するためたでの、データベースを作成しました。
- もっともシンプルに実験するためにです。実は私も、今まで、体験的に利用していましたが、このように実験したことはなかったのです。
あ!やっぱりそうか、など新しい発見がありました。
-
- マクロ起動データべース
- 構成は、簡単です。
実験はきわめてシンプル、マクロは単に、メッセージを表示するだけのものです。起動がかかってもあまりうれしくありませんが、必ず、それ以上の新しい発見があるのではないかと思います。
今回全部を実験することが出来ません。又を楽しみにしてください皆さんから要望(メール)が多ければ、早くやります。
- マクロ起動実験画面
- クリック時:マウスで、フイルドをクリックすると、マクロの起動がかかります。もっともわかりやすいものです。
これは、テキストフイルドでも起動がかかりますので、ボタンにして、クリックするとマクロ実行のように利用します。又、データを見て、確認したときクリックして次の操作(データ)を表示する時等にも利用します。ダブルクリック:内容はわかりますね、説明しません。利用の場面は、いろいろあります。
同じフイルド(ボタンなど)でも、処理マクロが2つある場合、クリックではAマクロの起動、ダブルクリックでは、Bマクロ起動のような利用も考えられます。又、ダブルクリックに操作説明マクロを設定すると、オンラインマニュアル的な利用もできます。利用はさまざま。
マウスボタン移動時マウスボタンが、上をとおるとマクロの起動がかかります。よくマニュアルとして見かける仕掛けです。でも、あまり起動がかかりすぎて邪魔なことが多いです。利用は控えめに。
キー入力時:フイルドにキーボード入力したときに、マクロの起動を掛けることです。キーボードからの最初の信号で起動がかかりますので、瞬間的にマクロが動きます。データを入力してその数字を使って、他のフイルドに計算結果を入れる場合に使いたいと思いますが、これが難しい。
上の画面で実験してください。数字1桁は入りますが、2桁以上は入りません。フイルドの設定ではなく、キーボードの最初の信号(数字1桁目)でマクロの起動がかかってしまい。それ以降の入力が出来ない状態になってしまうからです。
これは、かなり慣れた人でも、原因がわからずシステムエラーかと苦労してしまいます。どうして数字が、文字が入らないだろう。上記を考えると、データ入力して実行するマクロはここに設定してはいけないということです。
私の場合、これを利用するときは、数字が一桁とわかっているとき、及びコンボボックスで値を選択する場合、コンボに設定して利用します。この利点は、フイルドのデータを入れた瞬間にマクロが起動するので、処理が早く、反応がいいということです。
キー解放時、上記から、キー入力時では、駄目だ、データを全部入れた(たとえば4桁)時マクロの起動がかかればいい、と思いつき、キー解放時にマクロを設定してみると、これも、同じ、1桁しか入らない。なんだ、なんだ、同じだ。同じではないのです、キーを押しつづけてください。長い桁が入りますよね。
つまり、キーを連続させていて、それが切れた(解放)ときマクロが起動されるわけです。現在のところこれを使った思い出はありませが、このようにタイミングは、非常にデリケートに設定されるものなのです。オンラインなどの場合は、特に複雑になります。
■フォーカス喪失後
データを入力した後、他のフイルドに移動したときマクロの起動がかかります。ここでは数字でも、テキストでもゆっくりデータの入力確認ができるので、実際のシシテムでは、もっともよく利用するタイミングです。起動がかかるのが、フイルドを移動してからになるので、若干マクロの実行がずれます。
一番確実にマクロを起動かけれるタイミングなので、判断に迷ったら、ここに設定しておくのもよいと思います。
フォーカス取得時上記で実験しやすいように、いったん上のフイルドにカーソル移動して、エンターキー押すと、そのフイルドにフォーカスがかかり、マクロが起動します。このタイミングも、少ないですが利用されます。
フイルド表示前に前処理、たとえば、計算しておくとか、並び替えしておくとか、の場合、このフイルド前にデータが完全い入力されているかのチェックマクロを走らせ前データ入力を促す場合などに利用します。
マクロ起動のタイミングは、思わぬ結果を生みます。データが変化していく状況をしっかり把握して、取り組みましょう。
どうしても計算処理でマクロ結果が思うようにならない場合の多くは、データの更新(前)の扱いが生きていないためです。画面上、表上データが変化しても保存されないと(更新)前のデータで計算されます。今回は、ここまで、あとの続きは、又あとで……。
|