仕様の見直しも大事なこと
前回は"前のレコードに移動"という処理を追加しました。
そうしますと今回は"次のレコードに移動"の部分について解説するだろう、と99%の人が
思うわけですね。
でもすぐにはそっちにいかないんです(^-^;
なぜかといえば、動きに納得がいってないから。
このままだとどのヘンがマズイのでしょう? 実際動かしてみるとウスウス感づかれるのでは
ないかと期待しているのですが(^^;)
答は「登録処理の定義内容」です。
これはどういうことか? まず「登録」をクリックしますと、開始行から順番に1行ずつレコ
ードを追加していきます。そしてその際次のレコード入力に備えるため、画面のクリア処理を
行っています。
ここで問題なのが"レコードの登録は「新規登録」?それとも「修正」?"という点です。
そもそもレコードを次々に登録する場合、ワークシートの上から順に入れていったとしたら、
先に入力しておいたレコードが上書きされて消えちゃいますよね。
新規で登録する場合にはあくまで、「先に入力されたレコードが無い位置」に入れなくては
いけません。とは言っても、「次のレコードに移動」ボタンをどんどんクリックしていって
その位置を探す、なんてことはしませんよね(^_^; 2、3件のレコードならそれも可能ですが
普通はそんなことはやらないわけです。
ということは、新規登録の処理は
入力可能な位置を検出する(探し出す)
↓
その位置にレコードを登録
ということになるはずです。
そうなってきますと、「新規登録」と「修正」で処理を分ける必要が出てきますよね。
なぜかといえば、ボタンがクリックされた時に求められている動きとして
・入力済レコードの最下行の次に新規レコードを追加する
・現在表示されているレコードを上書きする
があり、これらは基本的に別の処理として位置づけられるべきものだからです。
もちろんこれらを1つのボタンで処理することも出来ないわけではありません。
(条件判断等が必要になりますが)
とりあえずここでは
・処理を組みたてる上でのわかりやすさを重視
・かといって使い勝手が悪くならないように
という2点を考慮し、下記のようにまとめてみました。
------------------------------------------------------------------------
<処理概要>
・データ入力を行う上で「新規登録」「修正/削除」の2モードを用意する
◆「新規登録」モード時
・起動時及びモードの切替時には、フォームに表示されているデータを
クリアする
・フォーム上からデータを入力できるようにする
・入力後「新規登録」ボタンをクリックすると、指定されたワークシートに
レコードが追加される
・挿入後は次の入力に備え、画面をクリアする
◆「修正/削除」モード時
・起動時及びモードの切替時には、現在のレコード行位置に対応する1件のレコ
ードをフォームに表示する
・フォーム上からデータを上書きできるようにする
・入力後「修正」ボタンをクリックすると、現在表示中のレコードが上書きされ、
ワークシートにも結果が反映される
・「削除」ボタンをクリックすると、現在表示中のレコードが削除され、ワーク
シートにも結果が反映される
・「削除」後は1つ前のレコードを表示し、1件も無い場合は空白表示とする
------------------------------------------------------------------------
こんな感じでいかがでしょうか?
処理部分の詳細については後程詰めるとして、なんとなくやろうとしていることは
おわかり頂けましたか?
要はモードをキッチリわけることによって、互いの操作性を損なわないように
したかったわけです。データの新規入力時は次々に画面がクリアされていった方
が入力しやすいですし、修正・削除はまた別に行えばいい。
この辺の要望は使う人によって様々でして、必ずしもこうでなくてはダメってこと
では無いです(^-^;
「使う人にとって使いやすい」のが一番ですね。
はっ!? 気がついたら今回はVBA的なことは何も書いてないぞ(・o・;)
まぁでも慌てることはありません。作る前にプランを練るのも重要なことですから。
市販のテクニック本では、こんなことには触れることもないでしょうし、せめてこの
ページをご覧いただいている皆さんには、こういうテクニック外の部分についても
知ってもらえたらなーなんて思ってます(^_^;
以上今回はここまで~♪(^^)/~
|
|
TOP > VBAでラクしたい ~Part 2~
|