- ベストアンサー
Excel VBA リストボックス表示について
- Excel VBAのリストボックス表示について、横表示にしたいという要望があります。
- 現在、作成したコードではリストボックスの結果表示が上下になってしまっています。
- リストボックスのColunmWidthsで指定したとおりの間隔で、横表示に結果を表示させたいと考えています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんにちは。 今回のご質問は下記↓のご質問、 http://qanda.rakuten.ne.jp/qa6197334.html と関連したものだと思いますので、それも踏まえてコメントさせて頂きます。 ※的外れな内容でしたらすみません。 リストボックスにリストデータを登録する際ですが、リスト1行に対して登録できる 項目は1項目だけではなく、ColumnCountプロパティにより列数の指定を行えば、 1行に複数列の項目を登録できるようになっています。 その際、1行の表示は複数データ(複数列)が横並びで表示されます。 また、ColumnWidthsプロパティによる列幅設定で、列幅の変更及び列の非表示 (列幅を0にすると非表示になります)も可能です。 リストボックスへの複数列のデータの登録(追加)の際は、 1列目は、AddItemメソッド 2列目以降は、Listプロパティ (行位置、列位置を指定) で登録できます。 リストボックスからのデータ取得は、 Listプロパティ (行位置、列位置を指定) で取得できます。 <リストの複数列の登録イメージ> 1列目 2列目 ・・・・・・・ 1行目: 項目1-1 項目1-2 ・・・・・・ 2行目: 項目2-1 項目2-2 ・・・・・・ 3行目: 項目3-1 項目3-2 ・・・・・・ : : : ですので、前回のご質問の目的が、 2つのリストボックスで、選択する項目(行)の同期をとること (同じ行数のリストで選択行のスクロールを同時に行う) が目的なら、上記のように1つのリストボックスで複数列を設定し、1行に2項目 (2列)のデータを表示するようにしたら如何でしょう? 今回のご質問も、同様にリストボックスに複数列の指定を行えば良いと思います。 以下(下記リンク先参照)に、リストボックスに複数列のデータ登録を行うサンプル マクロを掲載致します。宜しければ、検証してみて下さい。 ※当方では、Excel2000で作成・検証致しました。 ■サンプルマクロ(下記リンク先参照) http://ideone.com/DfqTS ■サンプルマクロの補足 1)このマクロは、ご提示のマクロソースをベースに変更・追加等をさせて頂きました。 ※ユーザーフォーム上のリストボックスへのデータ登録部分のみ記載しています。 2)このマクロは、[標準モジュール]への実装を想定しています。 ※関数 SetList2 は、ユーザーフォーム側の処理(ボタンクリックイベントなど)から 呼ぶようにして下さい。 3)ご提示の質問内容及びマクロでは、その処理仕様(データのフォーマット、データ の検索及び操作方法など)が不明な部分がありましたので、以下の部分等につい ては、こちらで勝手に決めさせて頂きました。 1.ワークシートのレイアウト 2.ユーザーフォームのレイアウト 3.ワークシートのデータ検索範囲をA列全体[a:a]ではなく、A列の空欄でないセル の最終行までとする 4.InStr関数の第1引数(検索先の文字列)で指定している文字列変数(strCom) の初期値設定の追加 ※当方では、このstrComの役割が不明なため、マクロ内の処理が正しいか どうかは判りません。 添付画像は、こちらで検証した際のExcelシート及び、ユーザーフォームの画面を キャプチャしたものです。 ※貼れていなかったり、見辛かった場合はすみません。 以上です。