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

VBAでラクしたい ~Part 2~

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

「修正」ボタンの処理

前回作成した「削除」ボタンの処理については、まだ若干の修正個所が残されています(^^;)

お気づきになった方もいらっしゃると思いますが、どんどん削除を続けていくとしまいには見出し
を削除したあげくにエラーで落ちたりします。(( ((( ヽ(;^^)ノ

この辺は各コントロールの使用の可不可を切り替えることで対応したいと思ってます。
が、ちょっとだけ後に回しておきますね。

というのは切り替えのタイミングって数箇所のプロシージャで行いますので、全体の動きをもう一
度確認してから修正の方を入れたいと思います。

#・・・やっぱし、行き当たりばったり気味のWebMasterσ(^_^;)

ということで、今回はまだ全く手をつけていなかった「修正」ボタンの処理を作ってしまうことに
いたしませう。

まずは仕様の確認から

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

これに基づいて書いてみましょう。


Private Sub CmdUpdate_Click()

    '*** データ修正処理 ***
    Cells(LngRecRow, cNameDataCol).Value = TxtName.Text
    Cells(LngRecRow, cMailDataCol).Value = TxtEmail.Text
    Cells(LngRecRow, cBirthDataCol).Value = TxtBirthday.Text

End Sub


なんか見たことあるようなコードしか書いてませんが(( ((( ヽ(;^^)ノスタコラサッサ

現在操作対象となっているレコードをフォームのデータで置き換えるだけですから、これだけで
いいということは、なんとなくお分かりいただけると思います(^-^;Aアセアセ
#手抜きでわございませぬ・・・


ここでは"画面表示はそのままとする"という仕様ですが、これも好みが分かれるところだと思いま
すね。「連続して修正したいから、次のレコードを表示するようにしてくれ」って言われたりもす
るかもしれませんし・・・。

そういう場合には下記のような処理を追加すれば対処できます


    '*** 現在のレコード位置より1つ後 ***
    If LngRecRow < LngAllRecCnt + 1 Then
       LngRecRow = LngRecRow + 1
       
       '*** レコード表示処理 ***
       TxtName.Text = Cells(LngRecRow, cNameDataCol).Value
       TxtEmail.Text = Cells(LngRecRow, cMailDataCol).Value
       TxtBirthday.Text = Cells(LngRecRow, cBirthDataCol).Value
       
       '*** 表示用レコード数を変数にセット ***
       LngCurRecNumDsp = LngRecRow - 1  '現在のレコード番号
       
       '*** レコード件数表示 ***
       LblRecCnt.Caption = LngCurRecNumDsp & "件目/全" & LngAllRecCntDsp & "件"
       
    End If


ほとんどが使いまわし状態のコードになっておりますので、詳しい説明は割愛させていただきま
すね(^^;)

ポイントとしては、次のレコードに移動したときのみ表示の更新を行っているところくらいでしょ
うか。


ちょっと短いですが、キリが悪いので続きは次回へ(( ((( ヽ(;^^)ノスタコラサッサ


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