病院で処方された薬や病気についてわかりやすく解説します

VBA講座2-10 コンボボックスの値をワークシートから取得

ノートパソコンとハーブ

今回はワークシートのセルに入力した値をコンボボックスに読み込ませるコードを書いていきます。この作業がなければコンボボックスに選択肢が出現しません。それでは早速いきましょう。

スポンサーリンク

コンボボックスの選択肢をワークシートのセルの値から取得する

 

ではVisual Basicの画面を開いて下さい。

vba2-10-1右側のコードウインドウを見て下さい。今は上の画像のようになっていますね。

 

Private Sub UserForm_Initialize()

End Sub

この意味は何でしたか?「ユーザーフォームを開いた時に○を行う」でしたね。

 

vba2-10-2○の部分にVBA講座2-9でお話したコードを書いていきます。

 

Dim i As Integer
For i = 2 To 17
cboTani.AddItem Worksheets(“基本マスタ”).Cells(i, 2).Value
Next

と入力して下さい。このコードの説明は前回行いましたので割愛します。それではF5を押して実行してみましょう。

 

vba2-10-3cboTaniの右側の下矢印をクリックしてみましょう。

 

vba2-10-4単位の候補が並んでいますね。

 

vba2-10-5右のスクロールバーを下に移動させて、しっかりUまで追加されているのを確認して下さい。

 

このようにしてコンボボックスに選択肢を追加します。これで完成としたい所ですが、これだけだとちょっと不親切です。使いやすくするためにもう一手間加えましょう。

コンボボックスの初期値を設定する

 

ここまでの作業で単位はいちいち入力せずに選べるように設定することができました。ただ薬で一番多い剤形は錠剤です。つまり、最初から錠剤の単位を示すTが入っていれば、新規登録する薬が錠剤の場合、毎回選択しなくてもいい事になります。

 

システム利用者がちょっとですが楽になります。こういう気遣いが大切なんですよ。ではどのようにすればいいかというと…

 

vba2-10-6Nextの次の行に

cboTani.Value = cboTani.List(0)

これを入れるだけです。解説しますと…

 

=の左側、cboTani.ValueはcboTaniのValue(.は基本「の」と読む)は、つまり「コンボボックス単位の値は」となります。

 

=の右側、 cboTani.List(0)はcboTaniのリストの0番目、つまり「コンボボックス単位のリストの0番目」となります。ん?イマイチよくわかりませんね。

 

ここでいうリストとはコンボボックスに追加した値「T~U」を意味します。これはいいですね?

 

そして普通は一番上のTを1番目とカウントすると思いますが、VBAの場合、一番上を0とカウントするのです。cboTani.List(0)はTを意味します。

 

つまり「コンボボックス単位の値はリストの1番目のTである」という意味になります。F5キーを押して実行してみましょう。

 

vba2-10-7Tが最初から入っている事を確認して下さい。この辺が一般的な考え方と違うのでちょっと難しいですね。

 

それでは今回はこれで終了とさせて頂きます。お疲れ様でした。

 

次回はコンボボックス採用区分の方も同じようにワークシートの値を読み込ませますが、ちょっとコードの書き方を変えて、汎用性を高めます。応用が効くコードに挑戦しましょう。
次の講座

スポンサーリンク

こちらの記事もおすすめです

関連記事

サイト内検索