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

VBAでラクしたい ~Part 2~

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

再び詳細部分を考える

連日暑いですね~。皆様は体調など崩されてはいませんか?(^o^;

一応お知らせなのですが、私もお盆休みなどをとる都合上、8月13日~16日
の期間は休筆させていただきます。

17日からまたUPできると思いますので、宜しくお願いいたします。

尚、励ましのメールは年中無休でお待ちしています。 #で、いいのか?(^_^;


余談になりましたが、前回の続きといきましょう。

この前まとめた仕様に基づきまして、入力フォームの変更点について考えてみました。

-------------------------------------------------------------------------------------

フォーム:FrmDataInput

<フォームに配置するコントロール>

1.「新規登録」 オプションボタン
2.「修正/削除」オプションボタン
3.「登録」ボタン
4.「修正」ボタン
5.「削除」ボタン
6.「前のレコードに移動」ボタン
7.「次のレコードに移動」ボタン
8. レコード数表示用ラベル

------------------------------------------------------------------------------------

一気にボタンが増えましたね(^^;)
そして「オプションボタン」を使ってのモード切替、ラベルを使っての情報表示、なんていう
手法がこれから登場してくるわけです。

そしてそのイメージ画面がこれっす↓(^_^;)
画面01

必ずしもこの並びでというわけではありません。お好みでレイアウトはいぢっていただいて
結構です。


次に処理の詳細を定義しましょう。-------

まずこれまでと違うのは「操作モードの切替」が発生するということです。
つまり「新規登録」モードと「修正/削除」モードを切り替えて使用する形になります。

どちらのモードであるかは、オプションボタンのOn/Offで判断します。
上記の1と2のオプションボタンは1つのグループとして扱い、片方がOnの状態の時、もう
片方は必ずOffの状態になるようにします。

各モードで実行できる処理も制限できるようにします。例えば「新規登録」モードであるにも
かかわらず「修正」ボタンがクリックできてしまうのはヘンですよね。処理上使わない、ある
いは使える状態であってはいけないコントロールに関しては、表示・非表示を切り替えたり、
使用の可否を切り替えたりして対処します。ここでは「使用の可否」を切り替える手法を取り
たいと考えています。

-------------------------------------------------------------------------------------
<処理詳細>

◆「新規登録」 オプションボタン クリック時 
・表示を On の状態にし、「修正/削除」オプションボタン表示を Off にする
・「修正」「削除」「次のレコードに移動」「前のレコードに移動」の各ボタンをクリック
  不可の状態に設定する
・「登録」ボタンをクリック可能な状態にする
・表示中のデータをクリアする

◆「修正/削除」 オプションボタン クリック時 
・表示を On の状態にし、「新規登録」オプションボタン表示を Off にする
・「修正」「削除」「次のレコードに移動」「前のレコードに移動」の各ボタンをクリック
  可能の状態に設定する
・「登録」ボタンをクリック不可な状態にする
・現在操作対象となっているレコードを表示する(レコードの現在位置を示す変数の値を参照)

◆「登録」ボタン クリック時
・指定のワークシートから入力済レコードの最下行位置を検出する
・その次の行位置に、現在表示中のレコードを追加する
・表示中のデータをクリアする
・全レコード件数・現在のレコード位置の表示を更新する

◆「修正」ボタン クリック時
・レコードの現在位置を示す変数の値を参照する
・ワークシートの対象行位置に、現在表示中のレコードを上書きする
・画面表示はそのままとする

◆「削除」ボタン クリック時
・レコードの現在位置を示す変数の値を参照する
・ワークシートの対象行位置から、現在表示中のレコードを削除する
・削除後は1つ前のレコードを表示することとし、レコードが無い場合は空白を表示。
・全レコード件数・現在のレコード位置の表示を更新する

◆「前のレコードに移動」ボタン クリック時
・現在位置よりも1つ前にレコードが存在するか調べる
・存在する場合は現在位置の変数を -1 し、該当するレコードを表示する
・    〃        現在のレコード位置表示を更新する
・存在しない場合はそのまま現在のレコードを表示する

◆「次のレコードに移動」ボタン クリック時
・現在位置よりも1つ後にレコードが存在するか調べる
・存在する場合は現在位置の変数を +1 し、該当するレコードを表示する
・    〃        現在のレコード位置表示を更新する
・存在しない場合はそのまま現在のレコードを表示する

-------------------------------------------------------------------------------------

ざっと書いてみましたが、いかがでしょ? アタマが痛いですか?(^-^;;;

具体的にどんな処理が発生するのか、ということを整理してみることは非常に大事なことです。
アタマの中だけで組み立てていくと、作っていくうちに組み込むべき処理を忘れたりするもん
ですので。 #わたしもそうσ(^_^;)

上記に加えて「フォーム起動時の処理」っていものがありましたよね d(^-^ )
一番初めの状態をどんなふうにするか、っていう決め事。

とりあえず
-------------------------------------------------------------------------------------
◆「FrmDataInput」フォーム 起動時
・現在のレコード位置を初期化
・全レコード数を検出
・モードを「修正/削除」にする
・初期レコードを表示(1件も存在しない場合は空白表示)
-------------------------------------------------------------------------------------

というふうにしておきましょうか。(^-^;

もちろん起動時は「新規登録」モードの方がイイ、っていう方はそのようにも出来ます。
方法さえ分かれば好きなように変更できるはずですので。


以上今回はここまで~♪(^^)/~


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