この記事では、Scrollbarを使ってシート上のListboxに表示されているデータの表示列幅を変更させる方法についてご説明します。
フォーム上に置いたListboxとScrollbarとの連携はこちらの記事で説明しています。
【ExcelVBA】Scrollbarを使ってフォーム上のListboxに表示されているデータの表示列幅を変更させるには?
【動画】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プロパティは、列の表示幅を設定するプロパティです。
なぜHeightプロパティに高さを設定するのかというと、ScrollbarのValueプロパティに値を設定するとListboxの高さが勝手に変更されてしまうからです。
なので、Heightプロパティを正しい値で再度設定しておく必要があります。
コードの例
Excelのマクロのコード(例)
Private Sub ScrollBar1_Change() With ListBox1 'Listboxの列幅を設定する .ColumnWidths = ScrollBar1.Value & ";" & _ ScrollBar2.Value & ";" & _ ScrollBar3.Value & ";" & _ ScrollBar4.Value 'Listboxの高さを再設定する(値はお使いの環境のListboxの高さにあわせて設定してください) .Height = 430 End With End Sub
Private Sub ScrollBar2_Change() With ListBox1 'Listboxの列幅を設定する .ColumnWidths = ScrollBar1.Value & ";" & _ ScrollBar2.Value & ";" & _ ScrollBar3.Value & ";" & _ ScrollBar4.Value 'Listboxの高さを再設定する(値はお使いの環境のListboxの高さにあわせて設定してください) .Height = 430 End With End Sub
Private Sub ScrollBar3_Change() With ListBox1 'Listboxの列幅を設定する .ColumnWidths = ScrollBar1.Value & ";" & _ ScrollBar2.Value & ";" & _ ScrollBar3.Value & ";" & _ ScrollBar4.Value 'Listboxの高さを再設定する(値はお使いの環境のListboxの高さにあわせて設定してください) .Height = 430 End With End Sub
Private Sub ScrollBar4_Change() With ListBox1 'Listboxの列幅を設定する .ColumnWidths = ScrollBar1.Value & ";" & _ ScrollBar2.Value & ";" & _ ScrollBar3.Value & ";" & _ ScrollBar4.Value 'Listboxの高さを再設定する(値はお使いの環境のListboxの高さにあわせて設定してください) .Height = 430 End With End Sub
コードの解説
4つのScrollBarコードをそれぞれご紹介しましたが、実は4つ全てが同じコードです。
なぜ同じなのかというと、4つのScrollBarのValueプロパティをListboxのColumnWidthsプロパティに設定しているだけだからです。
スクロールバーの「つまみ」をスライドさせたり、バー部分や左右の矢印をクリックするとScrollBarのValueプロパティの値が変更されるので、そのValueプロパティの値をListboxのColumnWidthsプロパティに設定することでListboxに表示されているデータの表示列幅も変更されます。
また、ListboxのColumnWidthsプロパティを変更することでListboxの高さが勝手に変更されてしまうので、ListboxのHeightに再度正しい値を設定することで正しい高さに調整しています。
Heightプロパティの値はお使いの環境のListboxの高さにあわせて設定してください。
最後に
本記事では、Scrollbarを使ってシート上のListboxに表示されているデータの表示列幅を変更させる方法についてご説明しました。
Scrollbarを操作するだけでListboxに表示されているデータの表示列幅を変えることができるのはとても楽で便利です。
シート上のListboxに表示されているデータの表示列幅を変更させたい場合は参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。