横スクロールバーを出さないリスト(リストボックス編)
フォームでリストボックス コントロールを使うことは多く、またそのリストを複数列表示にすることも良くあります。しかし、ListBoxのWidhtプロパティとColumnWidthsプロパティの値をうまく設定しないと、図1の左側Aのように「横スクロールバー」が現れてしまい、リストの項目を見るのに「スクロールバーを動かす」という手間が増えてしまいますし、情報量も減ってしまいます。見栄えも悪いと感じるかもしれません。
図1
今回は、リストボックスのリストに横スクロールバーが出ない条件を説明します。但しPCの環境やExcelのバージョンによっては値が異なる可能性もありますが、恐らく近い値だと思うのでトライ&エラーで導き出して下さい。
1.ColumnWidthsを設定しない場合
ColumnWidthsを設定せず、且つ「単列」の場合には、図2のようにリストボックスのWidth値が「75(ポイント)以上」にすれば、横スクロールバーは出ないようです。図2
また、複数列(2列・3列)の場合を図3に示します。
図3
ListBoxの幅(Widthプロパティ値)を変化させて見ると、2列では「147(ポイント)」で横スクロールバーが消え、3列では「219」で消えました。
この結果を連立方程式で解いてみると、横スクロールバーの出ない条件は、以下のような関係式になります。
「ListBoxのWidth値 ≧ 列数 × 72 + 3」(ColumnWidthsの設定無し)
2.ColumnWidthsを設定する場合
単列のリストボックスで「ColumnWidthsを設定」した場合、リストボックスの幅(Width値)とColumnWidthsの値には一定の関係があるようです。図4
複数列も調べると図5のように、同様の関係が得られることが分かりました。
図5
ここから横スクロールバーが現れない条件は以下の条件式で得られるようです。
「ListBoxのWidth値 - 3 ≧ ColumnWidths値」(ColumnWidthsの設定有り)
これをグラフにしてみると、図6のようになります。
図6
「横スクロールバーを出さないリスト(コンボボックス編)」では、WidthとColumnWidthsの差は「1.5」でした。今回のリストボックスでは「3」ですが、「どっちが1.5だっけ?」となると思うので、コンボボックス・リストボックスをまとめて「3」と覚えてしまった方が良いかもしれません。