動画でExcel セル範囲を配列として取得して、使うにはどうするか
動画版「マクロ講座」の解説記事です。
配列を1つずつ手作業で指定するのは面倒です。
もし既に表があるのであればそれを、配列として取得するという方法が考えられます。
今回はすでにある表形式のデータを入れとして取り込む方法そしてそれを活用する方法を紹介します。
(サンプルファイルは、こちらです。 セル範囲を配列として取得して、使うにはどうするか、サンプル101回)
中級以外の人にもわかるように丁寧に解説しています。
セル範囲A1からB10を指定する方法は複数あります。
範囲指定方法: A1:B10、左上セルと右下セルの指定
A1.CurrentRegion、ActiveSheet.UsedRangeなどです。

今回はA1.CurrentRegionを使用して範囲を指定します。
表には、支店名と店長名が記載されていて、支店名でブックを作成して、シート名には支店名、セルのA1には支店名、B1には店長名を記入するというマクロを作成します。

コードを書いていきましょう。Alt + F11でVisual Basic Editorを開きます。変数の宣言: branchArrは支店の配列を表すVariant型の変数です。

配列は後で代入するため、最初は変数名のみ指定します。"Variant"を使用することで、変数に後で配列を格納できます。

シート名とオブジェクト名を"shlist"に変更しています。

Sheets("shlist")のオブジェクト名をshlistに変更してあるので、変数として宣言しなくても、Excelが理解してくれるので、このような記述のしかたができます。

shlistのA1.CurrentRegionを取得してbranchArrに代入します。これでセル範囲から配列を取得できました。

"r"をLong型の変数として宣言します。ループ変数"r"を使用して指定された名前を繰り返し処理します。

2から10までの範囲をループ処理します(1は見出し行なので除く)。

newbookを設定します。そのあと、For文を利用して、シートを追加するループ処理をするわけです。

新規シートを追加したら、そのシートに名前をつけてやります。このとき取得済みの配列を利用します。

シートの名前をbranchArr(r, 1)(支店名)で設定します。また、シートのセルA1に支店名branchArr(r, 1)を入力します。セルB1にマネージャー名(branchArr(r, 2))を入力します。

この例により、シートに記入されたデータが、そもそも指定してやれば配列なのだということがおわかりいただけると思います。

実行すると、新規ブックが作成され、支店名ごとのシートが作成されています。またシートのセルA1に支店名、セルB1に店長名が入力されています。

Sub getrange_addsheet()
Dim branchArr As Variant
branchArr = shlist.Range("A1").CurrentRegion
Dim r As Long, newbook As Workbook, newsh As Worksheet
Set newbook = Workbooks.Add
For r = 2 To 10
Set newsh = newbook.Worksheets.Add
newsh.Name = branchArr(r, 1)
newsh.Range("A1").Value = branchArr(r, 1)
newsh.Range("B1").Value = branchArr(r, 2)
Next r
End Sub