今回は検索結果をリストボックスに表示するコードを書いていきましょう。

 

検索結果を1個ずつリストボックスに加えるなんてコードを書いたら、とんでもないことになります。

 

なので、検索結果が何個であっても対応できるコードにします。それではいきましょう。

スポンサーリンク

リストボックスの使い方

vba3-4-1

lstKouho.Clear

Dim StartRow As Integer, LastRow As Integer, i As Integer
StartRow = 2
LastRow = Worksheets(“医薬品検索結果”).Range(“A65536”).End(xlUp).Row
For i = StartRow To LastRow
lstKouho.AddItem Cells(i, 1).Value
Next

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

これが検索結果をリストボックスに表示するコードになります。それでは順に解説していきましょう。

lstKouho.Clear

これは「リストボックスlstKouhoをクリアする」。つまり空欄にするという意味です。

 

前の検索結果をクリアするということですね。そのまんまです。

 

Dim StartRow As Integer, LastRow As Integer,i As Integer

変数の宣言です。「変数StartRow、LastRow、iを数字と宣言する。」

 

変数3つを同時に宣言して1行にまとめています。これも以前やりましたね。覚えていますか?

 

StartRow = 2

「変数StartRowに数字の2を入れる。」

 

LastRow = Worksheets(“医薬品検索結果”).Range(“A65536”).End(xlUp).Row

「変数LastRowにはワークシート医薬品検索結果のA列で一番下の行から上に向かってぶつかった行を入れる。」

 

これも前にやりましたね。

 

For i = StartRow To LastRow lstKouho.AddItem Cells(i, 1).Value
Next

繰り返し処理になります。変数StartRowには今「2」が入っていますから…

 

「2行目からワークシート医薬品検索結果のA列で一番下の行から上に向かってぶつかった行までlstKouhoにアイテムを加える。そのアイテムとはCells(i,1)の値である。」となります。

 

Addは英語で「加える」という意味です。

スポンサーリンク

Cells(i,1)の意味がわかりますか?

さて、Cells(i,1)って何を意味しますか?A列の薬品名のことですよね。

 

For i = StartRow To LastRow lstKouho.AddItem Cells(i, 1).Value
Next

なので上記をもう少しわかりやすく言うと、「(検索して抽出された)薬品名を2行目から下に向かってある分だけlstKouhoに順番に加えていく」という意味になります。

 

例えば薬品名で検索して

アリセプトD錠3mg
アリセプトD錠5mg

が抽出されたとしましょう。

 

この場合、アリセプトD錠3mgはCells(2,1)に入っていますし、アリセプトD錠5mgはCells(3,1)入っています。

 

つまり変数LastRowに入るのはここでは「3」になりますね。

 

よってアリセプトD錠3mgとアリセプトD錠5mgがリストボックスlstKouhoに加えられる事になります。わかりますか?

 

では最後に、

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

次の検索に備えて「フィルターを解除する」という意味です。

 

いかがでしたでしょうか?

 

一見意味が分からなそうに見えても、直訳していけば大体の意味はわかりますので諦めずに頑張って下さいね!

 

それでは今回はこれで終了です。お疲れ様でした。

 

次回はリストボックスの薬品名をクリックした時に、黒線から下のコントロールに医薬品情報を表示させるコードを書いていきます。

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