この記事では、Scrollbarを使ってフォーム上のListboxに表示されているデータの表示列幅を変更させる方法についてご説明します。
シート上に置いたListboxとScrollbarとの連携はこちらの記事で説明しています。

【動画】Scrollbarを使ってフォーム上のListboxに表示されているデータの表示列幅を変更させている実際の動き
本題に入る前に、まずは次の動画をご覧ください。
スクロールバーの「つまみ」をスライドさせたり、バー部分や左右の矢印をクリックすることで列幅を変更しています。
Scrollbarを使ってフォーム上のListboxに表示されているデータの表示列幅を変更させる方法
Scrollbarを使ってフォーム上のListboxに表示されているデータの表示列幅を変更させるには、次の流れの通りに行います。
前提
フォーム上のListboxのデータ表示とScrollbarの設置は以下の前提でご説明します。
- すでにListboxがフォーム上に設置されている
- フォーム上のListboxに表示されているデータは4列
- Scrollbarの設置は4つ(Listboxのデータ表示が4列あるので)
作業の流れ
Minプロパティには0を、Maxプロパティには表示させたい列の最大の列幅を設定します。
ScrollbarのValueプロパティの値は「つまみ」の位置を指します。
※ScrollbarのValueプロパティの値は、「つまみ」をスライドさせたり、バーや矢印をクリックしたタイミングで再度設定されます。
【STEP.1】フォーム上にScrollbarを設置
フォーム上にScrollbarを設置します。
【STEP.2】ScrollbarのMIN・MAXプロパティの設定
ScrollbarのMIN・MAXプロパティの設定を行います。
Minプロパティには0を、Maxプロパティには表示させたい列の最大の列幅を設定します。
【STEP.3】マクロの作成
マクロは、ScrollbarのChangeイベント内にコードを記述します。
ColumnWidthsプロパティは、列の表示幅を設定するプロパティです。
列の表示幅は、このColumnWidthsプロパティに値を設定して変更します。
コードの例
Excelのマクロのコード(例)
Private Sub ScrollBar1_Change() With UserForm1.ListBox1 .ColumnWidths = UserForm1.ScrollBar1.Value & ";" & _ UserForm1.ScrollBar2.Value & ";" & _ UserForm1.ScrollBar3.Value & ";" & _ UserForm1.ScrollBar4.Value End With End Sub
Private Sub ScrollBar2_Change() With UserForm1.ListBox1 .ColumnWidths = UserForm1.ScrollBar1.Value & ";" & _ UserForm1.ScrollBar2.Value & ";" & _ UserForm1.ScrollBar3.Value & ";" & _ UserForm1.ScrollBar4.Value End With End Sub
Private Sub ScrollBar3_Change() With UserForm1.ListBox1 .ColumnWidths = UserForm1.ScrollBar1.Value & ";" & _ UserForm1.ScrollBar2.Value & ";" & _ UserForm1.ScrollBar3.Value & ";" & _ UserForm1.ScrollBar4.Value End With End Sub
Private Sub ScrollBar4_Change() With UserForm1.ListBox1 .ColumnWidths = UserForm1.ScrollBar1.Value & ";" & _ UserForm1.ScrollBar2.Value & ";" & _ UserForm1.ScrollBar3.Value & ";" & _ UserForm1.ScrollBar4.Value End With End Sub
コードの解説
4つのScrollBarコードをそれぞれご紹介しましたが、実は4つ全てが同じコードです。
なぜ同じなのかというと、4つのScrollBarのValueプロパティをListboxのColumnWidthsプロパティに設定しているだけだからです。
スクロールバーの「つまみ」をスライドさせたり、バー部分や左右の矢印をクリックするとScrollBarのValueプロパティの値が変更されるので、そのValueプロパティの値をListboxのColumnWidthsプロパティに設定することでListboxに表示されているデータの表示列幅も変更されます。
補足
Scrollbarの「つまみ」の位置と、フォーム上のListboxに表示されているデータの表示列幅を初期設定しておくと良いです。(フォーム設置直後は適当な値が設定されているため)
Scrollbarの「つまみ」の位置
Scrollbarの「つまみ」の位置はValueプロパティの値で決まります。
ちなみに、値が0だと「つまみ」の位置は一番左になります。
フォーム上のListboxに表示されているデータの表示列幅
あらかじめフォーム上のListboxに表示されているデータの表示列幅を決めておくことができます。
フォーム上のListboxに表示されているデータの表示列幅はColumnWidthプロパティで設定することができます。
また、すでに列幅が決まっている場合は、列幅の値とScrollbarのValueプロパティの値を合わせておくと良いです。
(Scrollbarの「つまみ」の位置をずらしたり、バーや矢印をクリックすることで値が変わるValueプロパティの値を、ListboxのColumnWidthプロパティに設定するため)
最後に
本記事では、Scrollbarを使ってフォーム上のListboxに表示されているデータの表示列幅を変更させる方法についてご説明しました。
Scrollbarを操作するだけでListboxに表示されているデータの表示列幅を変えることができるのはとても楽で便利です。
フォーム上のListboxに表示されているデータの表示列幅を変更させたい場合は参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。