コピペで使えるVBAのコード置き場

Excelのセルを読込み配列に格納

筆箱にVBAのカンニングペーパーを入れる係のみすくです。こんにちは。


Excelのセルを読み込んで配列に格納します。
VBAの配列の仕様は微妙だけど、処理は高速です。
一行ずつ処理をする場合、いったん配列に入れてからやると良いです。

Option Explicit

'---------------------------------------
' 列インデックス
'---------------------------------------
Private Enum eCOL
    COL_CATEGORY = 1
    COL_VEGETABLE
    COL_FRUITS
    COL_SEASONING
    COL_CONFECTION
End Enum

Public Sub main()
    Dim sh As Worksheet      'ワークシートオブジェクト
    Dim arr As Variant       '作業領域配列
    Dim index As Long        'カウンタ
    Dim endRowIndex As Long  '最終行
    
    Set sh = ThisWorkbook.Worksheets("Sheet1")
    '末尾行
    endRowIndex = sh.Cells(Rows.Count, "A").End(xlUp).Row
    '配列に格納
    arr = sh.Range(sh.Cells(2, eCOL.COL_CATEGORY), sh.Cells(endRowIndex, eCOL.COL_CONFECTION))
    
    For index = 1 To UBound(arr)
        Debug.Print arr(index, eCOL.COL_CATEGORY)
        Debug.Print arr(index, eCOL.COL_VEGETABLE)
        Debug.Print arr(index, eCOL.COL_FRUITS)
        Debug.Print arr(index, eCOL.COL_SEASONING)
        Debug.Print arr(index, eCOL.COL_CONFECTION)
    Next index
    
    Set sh = Nothing
End Sub

配列にこんな風に取り込まれます。

Excelを読込みCollectionに格納 比較的複雑な処理をしたり、カラムの増減がありえるときは
Collectionで実装。
速さを求めるなら配列。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です