コードを再利用、つまりコピー・アンド・ペーストをして医薬品情報修正・削除画面を作っていきましょう。
医薬品検索画面と医薬品情報修正・削除画面の2つは画面構成はほぼ同じで、かつその動作もほぼ同じです。
つまりコードを新たに書かなくても、そのまんまコピーしてあげればほとんどそのまま使えるというわけですね。
これを使わない手はありません。それでは早速いきましょう。
スポンサーリンク
コードのコピーアンドペーストで楽チン
まずfrmDSearchのコード画面を開きます。「右クリック → コードの表示」をクリック。
そしてコード画面の適当な場所をクリックして、ctrlを押しながらAを押して下さい。全てのコードが選択されましたね。これをコピーします。
そしてfrmDCorrectのコード画面を開きます。まだ何もコードが書かれていないかと思います。
ここに先ほどコピーしたコードを貼り付けましょう。これで医薬品の検索とフォームを閉じるコードは完成です。
医薬品情報修正・削除画面ではこれに加え
- 検索した後に医薬品情報を修正し、更新ボタンを押すとその内容が反映されるコード
- 削除ボタンを押すと医薬品情報を削除するコード
を書いていきます。
今回は医薬品情報を修正するわけですから、コンボボックスに値を読み込ませる事が必要となります。
frmDRegisterのコード画面を開きます。
このコードをコピーして、frmDCorrectに貼り付けて下さい。
あとは更新ボタンと削除ボタンを押した時の動作を書けば、医薬品情報修正・削除画面は完成です。
先に削除ボタンの処理を書いていきましょう。
まずは削除ボタンをダブルクリック。又は「右クリック → コードの表示」。
まず書くべきコードは「本当に削除していいか」を確認するコードです。間違って押してしまうと取り返しがつかなくなる、という事もありますからね。
では医薬品新規登録画面frmDRegisterのコードを開いて下さい。そして上の画像で赤で囲んだ部分に注目。これ使えそうですよね。早速コピーして…
削除ボタンのコードに貼り付けます。ただこのままだとダメなので一部訂正しましょう。
「医薬品データを登録します」 → 「医薬品データを削除します」
「医薬品新規登録の確認」 → 「医薬品データ削除の確認」
「vbQuestion」 → 「vbCritical」
今回は「間違って削除したら危険!」という事で、注意喚起を強調するために”vbCritical”にしています。
With Worksheets(“医薬品マスタ”)
Dim TargetRow As Integer, Kensaku As String
Kensaku = txtDname.Text
.Range(“A2”).AutoFilter field:=1, Criteria1:=Kensaku
TargetRow = .Range(“A65536”).End(xlUp).Row
.Rows(TargetRow).Delete Shift:=xlUp
.AutoFilterMode = False
lstKouho.Clear
txDSearch.SetFocus
End With
続けて新しいコードを書きます。赤枠の部分です。ここだけは他のユーザーフォームからコピペできません。頑張っていきましょう。
流れとしては…「削除したい医薬品名でワークシート医薬品マスタにフィルターをかけ抽出し、該当する行を削除する」という形となります。
スポンサーリンク
行を削除して上にシフトする「shift:=xlup」
それでは順に解説していきましょう。※With構文は省略。
「変数TargetRowを整数、変数Kensakuを文字列と宣言する」
「変数KensakuにはtxtDnameに入っている値を入れる」
「ワークシート医薬品マスタで、変数Kensaku(txtDnameの値)でA列にフィルターをかける。」
ここでは完全一致する医薬品だけが抽出されます。
「変数TargetRowはワークシート医薬品マスタのA65536のセルから上に向かってぶつかった行である」
「その行を削除する。そして上に詰める。」これが今回初めて見るコードですね。
削除した後は上にシフトし(詰め)なければいけません。空白の行ができてしまいますからね。
ちなみに今回は変数ですが、例えば
ならば「1行目を削除する」となります。
「フィルターを解除する。」
「リストボックスlstKouhoをクリアする。」
「txDSearchにカーソルをあわせる。」
ほとんど今までの復習ですね。最後にもう一仕事します。
全てのテキストボックスを空欄にして、コンボボックスには初期値を入れるようにします。医薬品新規登録画面で行った処理ですね。
医薬品新規登録画面のこの部分をコピーして、先ほどのコードの下に貼り付けて下さい。
こんな感じですね。長くなってしまいましたので、今回はこの辺にしておきましょう。お疲れ様でした。
次回は更新ボタンを押した時のコードを書いていきます。