続けて登録できるようにしてみよう
とりあえずは、データを1件登録するところまでこぎつけたわけですが、今度は
連続してデータを入力できるようにしたくなってくるわけです。
ここで連続入力処理の動きをチョットだけ考えてみましょう。
まずは起動
↓
入力位置の初期化
↓
データ入力
↓
登録ボタンクリック
↓
データ登録
と、ここまでが前回までに書いた処理ですが、このままですと何回ボタンをクリ
ックしても2行目のデータが変わるだけですよね。それはなぜでしょう?
それは「最初に決めた入力位置から変化していないから」ですね。
確かに、列位置も行位置も初期状態のまま、変化させるような処理を書いており
ません。この場合は新しいデータをどんどん下に追加していきたいわけですから
"入力行位置を下に1ずつ移動させればいい"
ということに気づきます。
なーるほど。じゃあデータ登録の次に
↓
データ登録
↓
入力行位置の移動(下に+1)
とすればいいのか、となるわけです。
確かにこれだけでも間違いではありませんが、チョット考えてみましょう。
新規でデータを追加するときって、大体は画面がまっさらな状態から入力します
よね。先程の状態ですと、登録をクリックしてもテキストボックスに入力された
値はそのまま保持されています。もちろん仕様としてそのような形を採用する場
合もありますが、ここでは "データが1件登録される毎にテキストボックスを
クリアする" という仕様にしてみましょう。そうすると
↓
データ登録
↓
入力行位置の移動(下に+1)
↓
テキストボックスのクリア
てな感じになればいいでしょう。では、やってみましょうか。
現在の行位置を下に1ずらすわけですから、現在の行位置を示す変数に1をプラス
すればいいことになります。したがって
'*** 行位置を下に移動 ***
LngRecRow = LngRecRow + 1
となります。
次にテキストボックスの値をクリアしたいわけですから、Textプロパティに対して
"" を入れてやればいいですよね。
'*** テキストボックスの値クリア ***
TxtName.Text = ""
TxtEmail.Text = ""
TxtBirthday.Text = ""
さて、ここまで書いたところで実行してみましょうか。
フォームからデータを入力して、登録をクリックしてみて下さいまし。
・・・・変わらない。
確かにテキストボックスの値はクリアされるけど、データが下に追加されない【汗】
なぜだか分かりますか?
ここまで書いたコードの一覧を掲載しておきますね。
Private Sub CmdTouroku_Click()
'*** データ列の定義 ***
Const cNameDataCol = 1 '氏名
Const cMailDataCol = 2 'メールアドレス
Const cBirthDataCol = 3 '誕生日
'*** 起動時のレコード行位置 ***
Const cInitRow = 2
'*** レコード行位置 ***
Dim LngRecRow As Long
'*** 行位置の初期化 ***
LngRecRow = cInitRow
'*** データ登録処理 ***
Cells(LngRecRow, cNameDataCol).Value = TxtName.Text
Cells(LngRecRow, cMailDataCol).Value = TxtEmail.Text
Cells(LngRecRow, cBirthDataCol).Value = TxtBirthday.Text
'*** 行位置を下に移動 ***
LngRecRow = LngRecRow + 1
'*** テキストボックスの値クリア ***
TxtName.Text = ""
TxtEmail.Text = ""
TxtBirthday.Text = ""
End Sub
このコードを上から順に追っていって、どこが原因なのかを突き止めてみましょう。
#その答は次回に!(( ((( ヽ(;^^)ノ
|
|
TOP > VBAでラクしたい ~Part 2~
|
|