エクセル 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)

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

Recent Posts