今回は検索前に必要な処理を行うコードを書いていきましょう。

検索方法は薬品名、一般名、識別記号で検索できるようにしますが、まずは薬品名検索からとりかかります。

スポンサーリンク

検索前の処理とは?

vba3-3-1btnDSearchをダブルクリック。

 

vba3-3-2上の画像のように表示されました。「btnDSearchを押した時、以下の動作を行う」ですね。

 

ではどういった処理を行うコードを書けばいいでしょうか?使う側に立って考えて下さい。

 

1.黒線より下の部分(医薬品情報)は全て空欄にする

新しく検索するわけですから、前に検索して表示された情報は消す必要があります。

 

2.txtGSearchとtxtKSearchを空欄にする

薬品名で検索された時のコードを書きますので、txtGSearchとtxtKSearchは空欄にします。

 

もしここに検索キーワードが入っていたら何で検索されたか使用者がわからなくなる可能性があります。

 

3.txtDSearchが空欄なのに検索ボタンを押した場合の処理

検索キーワードを入れる前に間違ってボタンを押した場合の処理を書く必要があります。

 

「検索ワードが入力されていませんよ!」といった感じですね。

 

順番に解説していきます。

スポンサーリンク

Left(変数.Name, 数字) = “○”

まずは1つ目。「黒線より下の部分(医薬品情報)は全て空欄にする」。

 

テキストボックスを空欄にする処理は医薬品登録画面の最後にやりましたね。だったらそのコードをコピペしてOK…とはいかないんです!

 

なぜならtxtDSearchまで空欄になり検索できなくなってしまいます。ではどうすればいいのか…

 

vba3-3-3上の画像を見て下さい。

 

左が医薬品新規登録画面で使ったコード、右が今回新しく書いたコードです。

 

赤枠で囲った部分が違いますね。

If Left(ctrl.Name, 3) = “txt” Then

文字通り訳すと…もし「コントロールの名前の左3つ(左3文字)がtxtならば」となります。これは定型文して覚えておいてもいいと思います。

 

つまり、「txt」で始まるコントロールが対象になります。左のコードとはその時に応じて使い分けします。

 

例えばコントロールで一括処理をしたい場合は左、名前で一括管理したい場合は右みたいに。

 

ではなぜ今回右だと都合がいいのでしょうか?

コントロールのオブジェクト名を一部変更するメリット

コントロールのオブジェクト名をちょっとだけ変えてしまいます。

 

txtDSearch、txtGSearch、txtKSearchのそれぞれtxtの後半のtを取っちゃって下さい。

 

txDSearch、txGSearch、txKSearchとなりますね。

 

はい。これで「左3文字txt」の制限を受けなくなりました!

 

他の方法としては後半のtを別の文字にしてもOKです。要は先頭3文字がtxtじゃなければ何でもいいのです。

 

2つ目。「txtGSearchとtxtKSearchを空欄にする」は超簡単。

txGsearch = “”
txKsearch = “”

ですね。

 

3つ目。「txtDSearchが空欄なのに検索ボタンを押した場合の処理」も医薬品新規登録画面でやりました。

 

vba3-3-4一番下の赤で囲った部分ですね。「txDSearchが空欄ならば、txDSearchにカーソルを合わせる」です。

 

以上で薬品名で検索する前の処理は終わりです。お疲れ様でした。

 

次回は薬品名で検索し、その結果を右側のリストボックスに表示する方法を解説します。

>>Excel VBA講座 目次へ