<Sheet to Array> 「シート」を「配列」へ

「シート」を「配列」に入れるプロシージャです。

'*******
'* 「シート」を「配列」に入れるプロシージャ。20230707
'* SheetName:シート名前
'* myArray:出力される配列は、参照渡し。配列は、モジュールレベル変数としている。
'* RejectRw=1とすると頭の1行目を除いた表が、配列に入る。1行目の見出しが不要な場合に使用。
Sub sheet_to_array(ByVal SheetName As String, ByRef myArray As Variant, Optional RejectRw As Long = 0)
    ' 表を一気に変数にいれて処理
    Dim Target As Range
    
    Set Target = Worksheets(SheetName).UsedRange
    
    With Target
        If .Rows.Count > RejectRw And RejectRw > 0 Then
            ' 最初の行数(RejectRw)を除外する
            Set Target = .Resize(.Rows.Count - RejectRw).Offset(RejectRw)
        End If
    End With
    
    'Variant型の変数に値を一気に代入する
    myArray = Target.Value
End Sub

「SheetName」のシートの使用しているすべてのセルを、配列にいれています。見出しなど、1行目が不要の場合は、「RejectRw=1」としてください。

使用例は、次です。

Dim arr() As Variant

' シートを配列に入れる、テストプロシージャ。
Private Sub test、シートを配列に入れる()
    ' (SheetName, ByRef arr, Optional RejectRw = 0)
    Call sheet_to_array("TEST", arr)
End Sub

以下のような「TEST」シートで、これを実行すると、

「arr」の中は、以下の通りです。

「RejectRw=1」の使用例です。

Dim arr() As Variant

' シートを配列に入れる、テストプロシージャ、見出しを除く。
Private Sub test、シートを配列に入れる1()
    ' (SheetName, ByRef arr, Optional RejectRw = 0)
    Call sheet_to_array("TEST", arr, 1)
End Sub

これを実行すると、「arr」の中は、以下の通りです。1行目の見出しを除いたデータが配列に入ります。

本サイトに関連ある記事一覧

Follow me!