教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでListViewを組み込む方法

ListViewは、複数のデータを一覧表示するのに便利なコントロールです。例えば、クラス内メンバーの名前や成績を一覧表示するときに役立ちます。

ListViewをフォームに追加する

①Excelを開く
Excelを開いたら、開発タブから「VBAエディター」を開きます。ショートカットキーは Alt + F11 です。

②ユーザーフォームの作成
「挿入」→「ユーザーフォーム」で、新しいフォームを作成します。

③ListViewをフォームに追加
ツールボックスにListViewはデフォルトで表示されていないことが多いので、まずは「追加ツール」をクリックし、「Microsoft ListView Control」を選びます。これでフォームにListViewが追加できるようになります。フォームにドラッグ&ドロップして配置します。

 ListViewにデータを追加する

(例1)ListViewにデータを追加するVBAコード(基本)

Private Sub UserForm_Initialize()
    ' ListViewの列の設定
    With ListView1
        .View = lvwReport ' 詳細表示モード
        .FullRowSelect = True ' 行全体を選択
        ' 列の追加
        .ColumnHeaders.Add , , "番号", 50
        .ColumnHeaders.Add , , "名前", 100
        .ColumnHeaders.Add , , "成績", 50
    End With
    ' データの追加
    Call AddData("1", "山田 太郎", "85")
    Call AddData("2", "鈴木 花子", "92")
    Call AddData("3", "田中 一郎", "78")
End Sub
Private Sub AddData(番号 As String, 名前 As String, 成績 As String)
    With ListView1.ListItems.Add
        .Text = 番号
        .SubItems(1) = 名前
        .SubItems(2) = 成績
    End With
End Sub

上記のプログラムは、ListViewの設定をlvwReportに設定して、詳細表示(表形式)を有効にします。また、FullRowSelectをTrueに設定することで、行全体が選択されるようにします。ColumnHeaders.Addでは、ListViewに「番号」「名前」「成績」の3列を追加しています。AddDataというサブルーチンを作成し、番号、名前、成績のデータをListViewに追加しています。

(例2)ListViewにデータを追加するVBAコード(応用)

Private Sub ListView1_Click()
    Dim 選択行 As ListItem
    Set 選択行 = ListView1.SelectedItem
    MsgBox "選択された生徒: " & 選択行.SubItems(1)
End Sub

上記のプログラムでは、ListViewで選択された行の名前をメッセージボックスで表示します。実際にクリックしてみると、生徒の名前が表示されます。このように、ListViewにもっと多くのデータを追加したり、選択されたデータを取得する方法もあります。

まとめ

ListViewは、多くのデータを見やすく整理して表示するのにとても役立ちます。クラスの名簿や成績表など、様々な場面で活用できるので、是非活用してください。