Top

hiroyuki.tank.support.site

簡単!マクロ講座

第27回〜フォーム-コンボボックス〜

 コンボボックスを使う理由は主に2点です。
 1点目は,ユーザーに文字を入力させる手間を省く。
 2点目は,意図した文字以外のものを入れて欲しくないということです。
 1点目はユーザー側にたった考え方です。文字入力しなくてもマウスでクリックするだけなので簡単です。処理も速くできます。
 2点目は作り手の考えになります。テキストボックスだとユーザが何を入力するか予想がつきません。
 例えば,大文字で入力して欲しいのに小文字で入力されてしまったりしますが,コンボボックスだと「これとこれのリストの中から選んでください」と作り手が意図した文字列の中から選んで入力してくれるという期待ができます。リストの中に入れたい文字列がある場合はわざわざキーボードで入力するユーザーはいないでしょうから。
 でも,本当はリスト以外の文字列も入力することは可能です。なんといってもコンボボックスとはテキストボックスとリストを合わせたコントロールですから。これを排除するにはまた違う手法が必要ですが今回は省略します。

 コンボボックスに表示する文字をどこでどうやって設定するかがポイントです。実際にやってみましょう。

 まず,前回から引き続いて使っているエクセルファイルのsheet1のa2に1,a3に2,a4に3,a5に4,a6に5を入力します。ない方は添付ファイルをダウンロードしてください。
 そして,VBEを開き,標準モジュールに次のように記述してください。
****************************************
1 Sub コンボ()
2 UserForm1.ComboBox1.List = Sheets("sheet1").Range("a2:a6").Value
3 UserForm1.Show
4 End Sub
****************************************

 これを実行するとUserForm1が表示され,コンボボックスの▼をクリックすると1〜5までの数字が選択できると思います。
2行目-UserForm1のコンボボックスのリストはsheet1のa2:a6といった意味です。
3行目-UserForm1をShowします。Showとは表すといった意味です。
 たったこれだけですが,これをマスターするといろいろなことに応用がききます。
 表示する文字を変えたいときはRange("a2:a6")に入力されている文字を変えるだけでOKです。
 範囲を広くしたいときは,Range("a2:a20")などと範囲を変えます。いろいろやってみてください。

| hiroyuki.tank.support.site.Top | このページのTop | マクロ講座目次 | 前回 | 次回 |