| 続けて登録できるようにしてみよう
 
 
とりあえずは、データを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~
 
 |  |