今回はコードを再利用、つまりコピー・アンド・ペーストをして楽をしてしまいましょう。医薬品検索画面と医薬品情報修正・削除画面の2つは画面構成はほぼ同じで、かつその動作もほぼ同じです。

 

つまりコードを新たに書かなくても、そのまんまコピーしてあげればほとんどOKなんですよ。これを使わない手はないですよね。それでは早速いきましょう。

スポンサーリンク

コードのコピーアンドペースト

 

vba4-2-1まずfrmDSearchのコード画面を開きます。「右クリック → コードの表示」

 

vba4-2-2そしてコード画面の適当な場所をクリックして、ctrlを押しながらAを押して下さい。すると全てのコードが選択されましたね。これをコピーします。

 

vba4-2-3そしてfrmDCorrectのコード画面を開きます。まだ何もコードが書かれていないかと思います。

 

vba4-2-4ここに先ほどコピーしたコードを貼り付けましょう。これで医薬品の検索とフォームを閉じるコードは完成です。

 

ここではそれに加え、検索した後に医薬品情報を修正し、更新ボタンを押すとその内容が反映されるコードを、また削除を押すと医薬品情報を削除するコードを書いていきます。

 

今回は医薬品情報を修正するわけですから、コンボボックスに値を読み込ませる事が必要です。

 

vba4-2-5frmDRegisterのコード画面を開きます。

 

vba4-2-6このコードをコピーして、frmDCorrectに貼り付けて下さい。あとは更新ボタンと削除ボタンを押した時の動作を書けば医薬品情報修正・削除画面は完成です。先に削除ボタンの処理を書いていきましょう。

 

vba4-2-7まずは削除ボタンをダブルクリック。又は「右クリック → コードの表示」。

 

vba4-2-8このようになりましたね。まず書くべきコードは「本当に削除していいか」を確認するコードです。間違って押してしまうという事もありますからね。

 

vba4-2-9では医薬品新規登録画面frmDRegisterのコードを開いて下さい。そして上の画像で赤で囲んだ部分に注目。これ使えそうですよね。早速コピーして…

 

vba4-2-10削除ボタンのコードに貼り付けます。ただこのままだとダメなので一部訂正しましょう。

 

vba4-2-12上の画像の赤枠で囲んだ部分を修正します。
「医薬品データを登録します → 削除します」
「医薬品新規登録の確認 → 医薬品データ削除の確認」
「vbQuestion → vbCritical
今回は間違って削除したら危険!という事で、注意喚起を強調するために”vbCritical”にしています。

vba4-2-13続けて新しいコードを書きます。赤枠の部分です。ここだけは他のユーザーフォームからコピペできません。頑張っていきましょう。

 

流れとしては…「削除したい医薬品名でワークシート医薬品マスタにフィルターをかけ抽出し、該当する行を削除する。」という形となります。

スポンサーリンク

それでは順に解説していきましょう。※With構文は省略。

 

Dim TargetRow As Integer, Kensaku As String

「変数TargetRowを整数、変数Kensakuを文字列と宣言する」

 

Kensaku = txtDname.text

「変数KensakuにはtxtDnameに入っている値を入れる。」

 

.Range(“A1”).AutoFilter field:=1, Criteria1:=Kensaku

「ワークシート医薬品マスタで、変数Kensaku(txtDnameの値)でA列にフィルターをかける。」ここでは完全一致する医薬品だけが抽出されます。

 

TargetRow = .Range(“A65536”).End(xlUp).Row

「変数TargetRowはワークシート医薬品マスタのA65536のセルから上に向かってぶつかった行である」

 

.Rows(TargetRow).Delete shift:=xlup

「その行を削除する。そして上に詰める。」これが今回初めて見るコードですね。

 

今回は変数ですが、例えば

Rows(1).Delete

ならば「1行目を削除する」となります。また削除した後は上にシフトし(詰め)なければいけません。空白の行ができてしまいますからね。

 

.AutoFilterMode = False

「フィルターを解除する。」

 

lstKouho.Clear

「リストボックスlstKouhoをクリアする。」

 

txDSearch.SetFocus

「txDSearchにカーソルをあわせる。」

ほとんど今までの復習ですね。

 

最後にもう一仕事します。
全てのテキストボックスを空欄にして、コンボボックスには初期値を入れましょう。医薬品新規登録画面で行った処理です。

 

vba4-2-14この部分をコピーして、先ほどのコードの下に貼り付けて下さい。

 

vba4-2-15こんな感じですね。長くなってしまいましたので、今回はこの辺にしておきましょう。お疲れ様でした。次回は更新ボタンを押した時のコードを書いていきます。

>>Excel VBA講座 目次へ