初期化処理
さぁいよいよ今回は初期化処理ですね。
ここまで一通り書けば、とりあえずのキホンといいますか、どんな感じで処理を組みたてていけば
いいのかという概要がつかめると思います。
あとは出来上がったものを動かしてみて、「ここはこうした方が使いやすいなぁ~」とかいう部分
について、修正を加えていけばいいわけです。
では本題
初期化処理の仕様について、もう一度見てみましょう。
-------------------------------------------------------------------------------------
◆「FrmDataInput」フォーム 起動時
・現在のレコード位置を初期化
・全レコード数を検出
・モードを「修正/削除」にする
・初期レコードを表示(1件も存在しない場合は空白表示)
-------------------------------------------------------------------------------------
ではこれに基づいて Private Sub UserForm_Initialize() の中に処理を書いていってみましょう
"現在のレコード位置を初期化" ということですから、初期値とする定数を現在のレコード位置を
示す変数に代入してやればいいわけですね。なので
'*** 行位置の初期化 ***
LngRecRow = cInitRow
となります。
続いて"全レコード数を検出"という処理。
これは全レコード数を数えて、レコード数を表示するところまでで1つの処理となります。
もう既に何度か他の処理で書いてますよね。 d(^-^ )
これもそのまま流用できますので
'*** 登録済のレコード件数取得(見出し行分除く) ***
LngAllRecCnt = Range("A1").CurrentRegion.Rows.Count - 1
'*** 表示用レコード数を変数にセット ***
LngCurRecNumDsp = LngAllRecCnt '現在のレコード番号
LngAllRecCntDsp = LngAllRecCnt '全レコード件数
'*** レコード件数表示 ***
TxtRecCnt.Text = LngCurRecNumDsp & "件目/全" & LngAllRecCntDsp & "件"
でいいでしょう。
そしてモードの切替ですね。
オプションボタンのON/OFFを切り替えるには、オプションボタンのValueプロパティに True/False
を入れてやればいいことは、既に説明済。よって、
'***「修正/削除」モードに切替 ***
OptUpdMode.Value = True
となります。
最後にレコードの表示ですが、注意すべき点は"レコードが0件だったら空白を表示"というとこく
らいですね。ここの条件判断を忘れて、見出し行とかが表示されないようにしましょう。
'*** 現在行位置が見出し行位置と同じ場合(レコード数ゼロ)
If LngRecRow = cMidasiRow Then
'*** 空白表示処理 ***
TxtName.Text = ""
TxtEmail.Text = ""
TxtBirthday.Text = ""
Else
'*** レコード表示処理 ***
TxtName.Text = Cells(LngRecRow, cNameDataCol).Value
TxtEmail.Text = Cells(LngRecRow, cMailDataCol).Value
TxtBirthday.Text = Cells(LngRecRow, cBirthDataCol).Value
End If
とまぁこんな感じです。え?アッサリしすぎてます?(^^;)
この辺については、もうほとんど説明しちゃってますからねぃ。取りたててどうこういう部分は無
いのですよ。
というわけで、初期化処理部分の全コードは
----------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
'*** 行位置の初期化 ***
LngRecRow = cInitRow
'*** 登録済のレコード件数取得(見出し行分除く) ***
LngAllRecCnt = Range("A1").CurrentRegion.Rows.Count - 1
'*** 表示用レコード数を変数にセット ***
LngCurRecNumDsp = LngAllRecCnt '現在のレコード番号
LngAllRecCntDsp = LngAllRecCnt '全レコード件数
'*** レコード件数表示 ***
TxtRecCnt.Text = LngCurRecNumDsp & "件目/全" & LngAllRecCntDsp & "件"
'***「修正/削除」モードに切替 ***
OptUpdMode.Value = True
'*** 現在行位置が見出し行位置と同じ場合(レコード数ゼロ)
If LngRecRow = cMidasiRow Then
'*** 空白表示処理 ***
TxtName.Text = ""
TxtEmail.Text = ""
TxtBirthday.Text = ""
Else
'*** レコード表示処理 ***
TxtName.Text = Cells(LngRecRow, cNameDataCol).Value
TxtEmail.Text = Cells(LngRecRow, cMailDataCol).Value
TxtBirthday.Text = Cells(LngRecRow, cBirthDataCol).Value
End If
End Sub
-----------------------------------------------------------------------------------------
となりました。
いかがでしたでしょうか? 入力フォームの作成を通して、VBAというものに対しての理解は深
まりましたか?(^-^)
などとエンディングめいたことを書いてますけど、ここで終わるわけではないですよ(^-^;A
一応の区切りとしてですので・・。
これまでご説明申し上げた内容で、そっくりそのまま作成されていることとは思いますが、念のた
めここまで出来上がった状態のxlsファイルをUPしておきますヽ(^-^ )
ファイルはLzh形式で圧縮しておりますので、解凍ソフト(Lhasaなど)で解凍しお試し下さい。
※Excel2000で開けるかは試しておりません(^-^;)
尚、このファイルは圧縮前・後に Norton AntiVirus Ver5.00.00 にてウイルスチェック済ですが、
100%の安全を保証するものではございません。ご使用の場合はあくまで自己責任にてお願い申し上
げます<(_ _)>
form01.lzh(Excel97形式 23.1KB)
それでは次回までごきげんよぉ~(^^)/~
|
|
TOP > VBAでラクしたい ~Part 2~
|
|