ExcelVBA リスト型を使い複数データを1つの変数で効率的に管理する方法

 

ExcelVBA 「リスト型」を使用すると、複数のデータを1つの変数で効率的に管理できます。特にデータの追加や削除が頻繁に行われる場合に便利です。「リスト型」は、柔軟で効率的なデータ構造を提供するCollectionやArrayListといったオブジェクトを活用します。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

Excel VBA リスト型の利用シーン

以下のようなシーンで利用で表示します。

1.動的なデータ管理が必要な場合(例: 変動するデータの追加・削除)

2.重複データを許容する場合( ArrayList )

3.シンプルなデータ一覧を操作する。

4.高速な検索や並べ替えを実現したい。

Excel VBA リスト型の使い方

VBAで「リスト型」として使用できる主なものは以下の通りです。

1. Collection
・VBA標準で利用可能
・動的にデータを格納でき、データの順序を保持します。

2. ArrayList
・Microsoftのライブラリを参照設定して使用します。
・高度な操作(並べ替え、検索など)が可能

Excel VBA リスト型のポイント

参照設定の確認(ArrayListの場合)

ArrayListを使用する際は、「Microsoft Scripting Runtime」を参照設定してください。

・手順
[VBAエディタ] → [ツール] → [参照設定] → 「Microsoft Scripting Runtime」にチェックを入れる。

・データの型
データ型に注意し、必要に応じて型変換を行いましょう。

・重複の扱い
Collectionではキーを使えば重複を防げますが、ArrayListは重複を許容します。

 

NET Framework 3.5 (.NET 2.0および3.0を含む)」を有効化も必要

①スタートメニューから「コントロールパネル」を起動してください。
②「プログラム」をクリックしてください。
③「Windowsの機能の有効化または無効化」をクリック
④NET Framework 3.5 (.NET 2.0および3.0を含む)」を有効化
⑤ダウンロード確認画面になります。ダウンロードが完了で再起動

 

Excel VBA  リスト型サンプルコード

Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

標準モジュール(Collectionを使用)

Option Explicit

Sub UseCollection()
    Dim myList As Collection
    Dim item As Variant

    ' Collectionオブジェクトを作成
    Set myList = New Collection

    ' データを追加
    myList.Add "リンゴ"
    myList.Add "バナナ"
    myList.Add "オレンジ"

    ' データをループで取得
    For Each item In myList
        Debug.Print item
    Next item

    ' 特定のデータを取得
    MsgBox "2番目の要素: " & myList(2) ' バナナを表示
End Sub

標準モジュール(ArrayListを使用したサンプル)

Option Explicit

Sub UseArrayList()
    Dim myList As Object
    Dim item As Variant

    ' ArrayListオブジェクトを作成(Scripting Runtimeが必要)
    Set myList = CreateObject("System.Collections.ArrayList")

    ' データを追加
    myList.Add "リンゴ"
    myList.Add "バナナ"
    myList.Add "オレンジ"

    ' データをループで取得
    For Each item In myList
        Debug.Print item
    Next item

    ' データの並べ替え
    myList.Sort
    Debug.Print "並べ替え後: " & Join(myList.ToArray, ", ")

    ' 特定のデータを取得
    MsgBox "2番目の要素: " & myList(1) ' 並べ替え後の2番目
End Sub

 

Excel VBA  リスト型|CollectionとArrayListの比較

項目 Collection ArrayList
標準機能 VBA標準機能 参照設定が必要(外部ライブラリ)
重複データ キーで防ぐことが可能 重複を許容
並べ替え機能 なし 標準で提供
検索機能 手動で実装が必要 標準で提供

リスト型は動的なデータ管理に最適です。 ArrayListは参照設定して利用します。

上記のサンプルコードはコピペで動作しますので、初心者の方でも安心して試せます。

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。