【ExcelVBA】Scrollbarを使ってシート上のListboxに表示されているデータの表示列幅を変更させるには?

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

参考
この記事で紹介しているのはシート上のScrollbarとListboxです。
フォーム上に置いたListboxとScrollbarとの連携はこちらの記事で説明しています。
【ExcelVBA】Scrollbarを使ってフォーム上のListboxに表示されているデータの表示列幅を変更させるには?

【動画】Scrollbarを使ってシート上のListboxに表示されているデータの表示列幅を変更させている実際の動き

本題に入る前に、まずは次の動画をご覧ください。


スクロールバーの「つまみ」をスライドさせたり、バー部分や左右の矢印をクリックすることで列幅を変更しています。

Scrollbarを使ってシート上のListboxに表示されているデータの表示列幅を変更させる方法

Scrollbarを使ってシート上のListboxに表示されているデータの表示列幅を変更させるには、次の流れの通りに行います。

前提

Listboxのデータ表示とScrollbarの設置は以下の前提でご説明します。

  • すでにListboxが設置されている
  • Listboxに表示されているデータは4列
  • Scrollbarの設置は4つ(Listboxのデータ表示が4列あるので)

作業の流れ

STEP.1
【Scrollbar】Scrollbarの設置
Scrollbarを設置します。
STEP.2
【Scrollbarのプロパティの設定】ScrollbarのMinプロパティとMaxプロパティに値を設定する
ScrollbarのMinプロパティとMaxプロパティに値を設定します。
Minプロパティには0を、Maxプロパティには表示させたい列の最大の列幅を設定します。
STEP.3
【マクロ】ScrollbarのValueプロパティの値をListboxのColumnWidthsプロパティに設定する
ScrollbarのValueプロパティの値をListboxのColumnWidthsプロパティに設定します。
ScrollbarのValueプロパティの値は「つまみ」の位置を指します。
※ScrollbarのValueプロパティの値は、「つまみ」をスライドさせたり、バーや矢印をクリックしたタイミングで再度設定されます。

【STEP.1】Scrollbarの設置

Scrollbarを設置します。

【STEP.2】ScrollbarのMIN・MAXプロパティの設定

ScrollbarのMIN・MAXプロパティの設定を行います。

Minプロパティには0を、Maxプロパティには表示させたい列の最大の列幅を設定します。

【STEP.3】マクロの作成

マクロは、ScrollbarのChangeイベント内にコードを記述します。

STEP.1
ScrollbarのValueプロパティの値をListboxのColumnWidthsプロパティに設定する
ScrollbarのValueプロパティの値をListboxのColumnWidthsプロパティに設定します。
ColumnWidthsプロパティは、列の表示幅を設定するプロパティです。
STEP.2
Listboxの高さをHeightプロパティに値を設定する
Listboxの高さをHeightプロパティに値を設定します。
なぜHeightプロパティに高さを設定するのかというと、ScrollbarのValueプロパティに値を設定するとListboxの高さが勝手に変更されてしまうからです。
なので、Heightプロパティを正しい値で再度設定しておく必要があります。

コードの例

Excelのマクロのコード(例)

Scrollbar1つ目
Private Sub ScrollBar1_Change()
    
    With ListBox1
        
        'Listboxの列幅を設定する
        .ColumnWidths = ScrollBar1.Value & ";" & _
                        ScrollBar2.Value & ";" & _
                        ScrollBar3.Value & ";" & _
                        ScrollBar4.Value
                        
        'Listboxの高さを再設定する(値はお使いの環境のListboxの高さにあわせて設定してください)
        .Height = 430
            
    End With

End Sub
Scrollbar2つ目
Private Sub ScrollBar2_Change()
    
    With ListBox1
        
        'Listboxの列幅を設定する
        .ColumnWidths = ScrollBar1.Value & ";" & _
                        ScrollBar2.Value & ";" & _
                        ScrollBar3.Value & ";" & _
                        ScrollBar4.Value
                        
        'Listboxの高さを再設定する(値はお使いの環境のListboxの高さにあわせて設定してください)
        .Height = 430
            
    End With

End Sub
Scrollbar3つ目
Private Sub ScrollBar3_Change()
    
    With ListBox1
        
        'Listboxの列幅を設定する
        .ColumnWidths = ScrollBar1.Value & ";" & _
                        ScrollBar2.Value & ";" & _
                        ScrollBar3.Value & ";" & _
                        ScrollBar4.Value
                        
        'Listboxの高さを再設定する(値はお使いの環境のListboxの高さにあわせて設定してください)
        .Height = 430
            
    End With

End Sub
Scrollbar4つ目
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週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら