【Excelマクロ(VBa)】リストビューの活用


 フォーム


リストボックスの基本的な処理を説明しましたが、個人的にはリストボックスよりリストビューを使ってます。

理由としては、ヘッダーが簡単に追加できるからです。

リストビューは下記ツールボックスにデフォルトで表示されていないので、まずはツールボックスに追加するところから始めます。

ツールボックス上で右クリックし「その他のコントロール」を選択します。



「コントロールの追加」画面が表示されるので、「Microsoft ListView Control, version X.X」を選択します。



すると、ツールボックス上にListViewのアイコンが作成されました。これを使ってフォームにListViewを作成して下さい。



比較しやすいように、今回はリストボックスの時と同じようなフォームを作成しました。





 プロパティ


ListViewをフォーム上に作成したらプロパティを下記のように変更します。



「GridLines」はグリッド線の表示有無で、Trueにすることで表示が見やすくなります。

「View」は いくつか種類がありますが、ヘッダー利用のためにListViewを利用するので「3 - lvwReport」を選択します。



 フォーム起動時の設定


編集画面でフォームをダブルクリックすると、下記のような関数が作成されます。


Private Sub UserForm_Click()

End Sub

ClickからInitializeを選択すると、フォーム起動時に実行される処理が作成できます。



このフォーム起動時の処理に下記をコーディングします。

Private Sub UserForm_Initialize()

  'ヘッダーのクリア
  lstFileName.ColumnHeaders.Clear
  'リストのクリア
  lstFileName.ListItems.Clear

  'ヘッダーの作成(左詰)
  lstFileName.ColumnHeaders.Add 1, "FileName", "ファイル名", 200, lvwColumnLeft

End Sub

その結果、フォームを起動すると、下記のように画面が作成できます。





 フォルダの取得方法


下記のようにファイルを複数選択した場合・・・



選択したファイルをリストビューに表示します。



'フォルダ選択のダイアログを表示する
With Application.FileDialog(msoFileDialogFilePicker)
  '複数選択可
  .AllowMultiSelect = True

  'フィルター:ファイル種類
  With .Filters
    .Clear
    .Add "Microsoft Excel", "*.xls?"
    .Add "text", "*.txt"
    .Add "All File", "*.*"
  End With

  'OKを押した場合
  If .Show = True Then
    'リストビューアイテムのクリア
    lstFileName.ListItems.Clear

    '選択したファイルをリストビューに登録
    For i = 1 To .SelectedItems.Count

      lstFileName.ListItems.Add.Text = .SelectedItems(i)
      'リストビューのデータをチェック
      lstFileName.ListItems(i).Checked = True
    Next i

  End If
End With



 リストの表示方法を変更する


下記のようにプロパティの【Checkboxes】「True」に変更します。



すると、下記のようにチェックボックスが表示されます。




 選択した情報の取得方法


リストに表示されている件数分ループ処理を行い、それぞれチェックされているか判定します。

Dim i As Long
Dim strData As String

'リストビューに登録された件数分ループする
For i = 1 To lstFileName.ListItems.Count
  '対象データが選択されている場合
  If lstFileName.ListItems(i).Checked Then
    '表示対象として変数に取得する
    strData = strData & lstFileName.ListItems(i).Text & vbCrLf
  End If
Next i

'メッセージボックスで選択データを表示
MsgBox strData

結果は下記のようにになります。



管理人 について

趣味:映画鑑賞・音楽鑑賞・ゲーム・旅行 仕事:会社員(IT関連)
カテゴリー: VBa(Excelマクロ), システム開発 パーマリンク

コメントを残す