エクセル VBA ListViewにスクロールバーを表示させる(Excel VBA)

【本日のミッション】

エクセル VBA の ListViewオブジェクトにスクロールバーを表示させよ。

ミッションの概要

エクセル VBA の ListViewオブジェクトにスクロールバーを表示させよ、というのが今回のミッションです。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

■■■スポンサーリンク■■■

UserForm_Initialize に設定するコード

スクロールバーが表示されている ListView のユーザーフォーム Initializeイベント「Private Sub UserForm_Initialize」には、下記コードが設定されています。
(コードの内容につきましてはエクセル VBA ListViewにドラッグ&ドロップでファイル名・ファイルパス複数の情報を取得(Excel VBA)をご参照ください。)

Private Sub UserForm_Initialize()
    With ListView1
        '■プロパティ設定
        .FullRowSelect = True           '行全体の選択
        .Gridlines = True               '行列グリッド線の表示
        .LabelEdit = lvwManual          'ラベル編集不可
        .OLEDropMode = ccOLEDropManual  'ファイルドロップ処理
        .View = lvwReport               '表示形式

        '■列見出しの名前・列幅の設定
        .ColumnHeaders.Add , "key1", "1列目", 175, lvwColumnLeft
        .ColumnHeaders.Add , "key2", "2列目", 200, lvwColumnLeft
    End With
End Sub

スクロールバーが表示される条件

ListViewオブジェクトには、スクロールバーの表示⇔非表示を設定するするプロパティは存在しません。
スクロールバーの表示・非表示に関わってくるのは、ColumnHeaders.Addで指定する列幅になります。ColumnHeaders.Addで指定する列幅の合計が、ListViewのWidthより大きくなると、スクロールバーが表示されます。

正確にはListViewのWidthより少し小さい段階で表示されるようなのですが、その境目はよくわかりません。今回のサンプルでいうと、ListViewのWidthが「350.25」に対して、ColumnHeaders.Addの列幅の合計が「349」の時はスクロールバーが表示されて、「348」の時は表示されませんでした。

【スクロールバーが表示されないListViewのコード】

.ColumnHeaders.Add , "key1", "1列目", 175, lvwColumnLeft
.ColumnHeaders.Add , "key2", "2列目", 170, lvwColumnLeft

【スクロールバーが表示されるListViewのコード】

.ColumnHeaders.Add , "key1", "1列目", 175, lvwColumnLeft
.ColumnHeaders.Add , "key2", "2列目", 200, lvwColumnLeft

■■■スポンサーリンク■■■

ColumnHeaders.Add

ListViewオブジェクトの列見出しを設定します。

ListViewオブジェクト.ColumnHeaders.Add Index, Key, Text, Width, Alignment, Icon
引数内容
Index追加する列の位置を指定します。省略すると左から追加されます。
Key列見出しを特定するユニークな名前を指定します。
同じ名前を指定すると「実行時エラー ‘35602’: Key is not unique in collection」というエラーが表示されますので、重複しない名前を指定するようにします。
Text列見出しに表示する文字列を指定します。
Width列見出しの幅を指定します。省略すると均等幅になります。
Alignment見出し文字列の位置を指定します。

lvwColumnLeft(規定値)左寄せ
lvwColumnRight右寄せ
lvwColumnCenter中央

【参考】

VBA(マクロ)作成の前、リボンに開発タブを表示させる(Excel VBA)
ユーザーフォームの作成方法 準備(Excel VBA)
ユーザーフォームのオブジェクトの名前を「UserForm1」から変更する方法(Excel VBA)
ユーザーフォームの上のバー(タイトルバー)の名前を「UserForm1」から変更する(Excel VBA)
ユーザーフォームのオブジェクトウィンドウとコードウィンドウを表示切替させる方法(Excel VBA)
「オブジェクト名が不正です」を出さないようにユーザーフォームオブジェクト名を命名規則に従って変更(Excel VBA)
エクセルファイルが開いた時にユーザーフォームを表示させる方法(Excel VBA)
エクセル フォームのラベルのテキストを縦書きにする方法(Excel VBA)
エクセル VBA フォーム ツールボックスにListViewコントロールを追加(Excel VBA)
エクセル VBA フォーム「Microsoft ListView Control」が出てこない原因 (Excel VBA)
エクセル VBA ListViewにドラッグ&ドロップでファイルパスを取得(Excel VBA)
エクセル VBA ListViewにスクロールバーを表示させる(Excel VBA)
エクセル VBA ListView の FullRowSelect プロパティとは(Excel VBA)
エクセル VBA ListView の Gridlines プロパティとは(Excel VBA)
エクセル VBA ListView の LabelEdit プロパティとは(Excel VBA)
エクセル VBA ListView の OLEDropMode プロパティとは(Excel VBA)
エクセル VBA ListView の View プロパティ とは(Excel VBA)
エクセル VBA ListView の ColumnHeaders コレクションとは(Excel VBA)
エクセル VBA ListViewにドラッグ&ドロップでファイル名・ファイルパス複数の情報を取得(Excel VBA)
エクセル VBA ListViewのListItems・SubItemsコレクションとは(Excel VBA)
エクセル VBA ListView の OLEDragDropイベントとは(Excel VBA)

■■■スポンサーリンク■■■