それでは医薬品データの重複チェック、後半にいきましょう。

 

前半は「テキストボックスに入力された文字列で、ワークシート医薬品マスタのA列をフィルターにかけ、抽出された部分をワークシート検索結果にコピペする」ここまでを行いました。

 

それでは残りの処理を書いていきましょう。

ほとんど今までやったことの復習です!

If Worksheets(“医薬品検索結果”).Range(“A2”) <> Empty Then
MsgBox “医薬品名が重複しています。”, vbCritical, “確認”
txtDname.SetFocus
Exit Sub
End If

Worksheets(“医薬品マスタ”).AutoFilterMode = off

上の画像の青で囲った部分ですね。それでは1行ずつ解説していきます。

 

If Worksheets(“医薬品検索結果”).Range(“A2”) <> Empty Then

これはいいですね。「もしワークシート医薬品検索結果のA2セルがEnpty(空欄)じゃなかったら」となります。<>は≠と同じでしたね。

 

MsgBox “医薬品名が重複しています。”, vbCritical, “確認”

「メッセージボックスに”医薬品名が重複しています”と表示する。アイコンは×印、ウインドウ枠に”確認”と表示。」

 

txtDname.SetFocus

「txtDnameにカーソルを合わせる。」

 

医薬品が重複しているわけですから、当然システム使用者は医薬品名を修正します。だからカーソルを合わせるのです。

 

Exit Sub

カーソルを合わせたら処理を抜けます。医薬品名の修正作業に入るためです。

 

End If

最後にEnd If

 

医薬品検索結果のA2セルに医薬品名が入っていれば、既に登録されているものであるという事になります。

 

反対になければまだ登録されていないので、新規登録ができる(その後のコードに続く)ことになるのです。

AutoFilterMode = off

これでほぼ完成ですが、最後にもう1行追加します。

 

Worksheets(“医薬品マスタ”).AutoFilterMode = off

「ワークシート医薬品マスタのフィルターをoffにする(解除する)」

 

vba2-17-1フィルターをかけると上の画像のようになりますが、もしこのままだと、次に別のキーワードで重複チェックする時に引っかからなくなってしまいます

 

そのためフィルターを解除して元に戻しておく必要があるのです。

 

vba2-17-2薬品名(A1セル)の右側の矢印をクリックします。次に画面中ほどのすべて選択をクリックし、OKを押します。

 

vba2-17-3フィルターが解除されましたね。この一連の流れが

AutoFilterMode = off

になります。

 

新規登録画面はここまで理解できればもう大丈夫。あとは簡単な作業だけです。

 

残りは「新規登録された医薬品データをソートして、昇順に並び替える」のと、「連続で医薬品を入力する時のために、テキストボックスを空にする操作」だけ。

 

医薬品新規登録画面の完成まであと少し。次回は登録した医薬品データをソート(並び替え)するコードについて説明します。お疲れ様でした。