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

 

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

スポンサーリンク

医薬品検索前の処理とは?

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

 

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

 

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

 

実際に行う処理は以下の3つです。

黒線より下の部分(医薬品情報表示部分)は全て空欄に

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

txtGSearchとtxtKSearchを空欄に

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

 

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

txtDSearchが空欄なのに検索ボタンを押した時の処理

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

 

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

 

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

スポンサーリンク

医薬品情報表示部分を全て空欄にする~Left(変数.Name, 数字) = “○”

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

 

テキストボックスを空欄にする処理はVBA講座2-19の最後にやりましたね。

 

「よ~し、だったらそのコードをコピペしてOK!」…とは残念ながらいかないんです!

 

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

 

上の画像を見て下さい。

 

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

 

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

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

文字通り訳すと…「もしコントロールの名前の左3つ(左3文字)がtxtならば」となります。

 

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

 

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

 

これは定型文して覚えておいてもいいと思います。ではなぜ今回、右の方が都合がいいのでしょうか?

 

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

 

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

 

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

 

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

 

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

txtGSearchとtxtKSearchを空欄にする

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

txGsearch = “”
txKsearch = “”

ですね。

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

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

 

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

 

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

 

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

>>Excel VBA講座 目次はこちら