ユーザーフォームのリストボックスへ2列型のリストを表示するには?

Question 60.5 Previous Next
詳細は こちら 500連発第2弾394番に関連した質問をさせてください。

ユーザーフォームに作成した、2列のリストボックスにリンクする2つのセルを設定するには、どうすれば良いでしょうか?
Answer   Copyright (C) 2003.5.29 永井善王
「Excel VBAマクロ 500連発第2弾」394番は「リストボックスのリンクするセルを設定・クリアする」と題するサンプルで、ワークシートに作成したリストボックスにリンクするセルを設定し、クリアする方法をご紹介しています。

ご質問とサンプルの相違点は、(1) リストボックスを
ユーザーフォームに作成すること、(2) リストを2列型にすることでしょうか。
おそらく (1)についてのご説明は不要でしょうから、(2)についてご回答します。

394番のサンプルでは、リストにワークシートのデータを表示するためのコードを数例紹介しています。一例としては次のとおりです。
    Worksheets("Title").DrawingObjects("リスト 1").Select
    With Selection
        .ListFillRange = "管理表!A2:A4"
        .LinkedCell = "呼出!$A$2"
    End With
これを見て ListFillRangeプロパティの設定を変えるのではないかと と思われましたね。例えば、1列目のデータがワークシートの A列に、2列目が B列に入っている場合は、 .ListFillRange = "管理表!A2:B4" のように変更します。

プロパティウィンドウ そして右図のように、リストボックスのプロパティウィンドウの中に[ColumnCount]プロパティがありますから、'2' を設定します。

なお、リストボックスとコンボボックスとは共通点が多く、他にもいろいろな方法があります。
この「すぐに役立つエクセルVBAマクロ集」の中の下記のページも参考にしてください。特に、ワークシートのデータの 1列目と 2列目が離れている場合などに役立つかもしれません。
 ・
コンボボックスのリストをセットする (2列型)
 ・
2列型のコンボボックスで選択されたら2列目を表示してその値を取得するには

また、拙著「Excel VBA マクロ組み方講座」では、さまざまな設定方法をわかりやすく解説しています。よろしければ、ご覧ください。2003年6月下旬に全国書店で発売開始です。
後日情報
500連発第2弾は完売になりました。 が、その後に発売された下記の本にも、同様のマクロが掲載されています。
 ・ Excel VBA そのまま使える実用マクロ500連発 の419番
「リストボックスの表示項目とリンクするセルを設定・クリアする」

 

Excel VBA Macro