Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 2次元配列にセルのデータを格納するExcelマクロ

2次元配列にセルのデータを格納するExcelマクロ

対象:Excel2003, Excel2007, Excel2010

「vba 二次元配列 選択したセルのデータを格納」
という検索で、このサイト・インストラクターのネタ帳にアクセスくださった方がいらっしゃいます。

2次元配列にセルのデータを格納する方法を探している方による検索です。

プログラミングの経験はあるけれども、Excel VBA(Visual Basic for Applications)のことをご存じない方の場合、ループをグルグル回しながらデータを配列に格納するということをやってしまいがちです。

Excel VBAの場合は、とても簡単に2次元配列にデータを格納することができます。

[スポンサードリンク]

セルのデータを配列に格納するサンプルマクロ

以下のマクロが参考になるでしょう。


Sub 選択されているセル範囲から新規ブックを作成する()
 Dim arr As Variant
 Dim r As Long
 Dim c As Long

 arr = Selection.Value ' 配列にデータを格納

 If IsArray(arr) Then
  r = UBound(arr, 1)
  c = UBound(arr, 2)
 Else
  r = 1
  c = 1
 End If

 Workbooks.Add
 Range("A1", Cells(r, c)).Value = arr
End Sub

例えば、B2:G11セルが選択させた状態で上記のマクロを実行すると、新規ブックが作成され、その新規ブックのA1:F10セルに、元のブックのB2:G11セルのデータが入力されます。

サンプルマクロの解説

以下の1行で配列・arrにデータが格納されます。
 arr = Selection.Value

ReDimステートメントもないこの1行で、バリアント型の変数・arrに、選択されていたセルのデータを、2次元配列としていきなり格納できます。

ただし、セルが1個だけ選択されていたときには、変数・arrが配列になりません。

そのためIsArray関数でarrが配列かどうかをチェックして
 If IsArray(arr) Then

配列になっていた場合には大きさをUBoud関数を使って調べ、変数・rとcに格納しています。
  r = UBound(arr, 1)
  c = UBound(arr, 2)

arrが配列でないときには変数・rとcに「1」を格納しています。
 Else
  r = 1
  c = 1

ステップ実行をして、End Ifの行でローカルウィンドウを表示すれば、arrが2次元配列になって、選択しておいたセル範囲のデータが格納されていることを確認できるでしょう。

ブックを追加して
 Workbooks.Add

配列からデータを一気に書き出しています。
 Range("A1", Cells(r, c)).Value = arr

書き出す方も、ループ処理をする必要はなく、一気に書き出すことができます。

なお、
 Range("A1").Value = arr
のように先頭のセルだけを指定して書き出してくれないかと考えてしまう方もいらっしゃいますが、これはダメです。

書き出すセル範囲を、
 Range("A1", Cells(r, c)).Value = arr
のようにしっかりと指定してください。

この指定が必要なために、変数・rとcに行数・列数を格納する処理、
 If IsArray(arr) Then
  r = UBound(arr, 1)
  c = UBound(arr, 2)
 Else
  r = 1
  c = 1
 End If
が入っていたのです。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 2次元配列にセルのデータを格納するExcelマクロ

TrackBack:4

TrackBack URL
表内の文字列を配列に格納するPowerPointマクロ from インストラクターのネタ帳
PowerPoint(パワーポイント)で、表の中の文字列を取得するVBAのコードをご紹介しています。
表内の文字列を2次元配列に格納するWordマクロ from インストラクターのネタ帳
表内の文字列を2次元配列に格納するWord(ワード)マクロをご紹介しています。
VBAでAVARAGE関数の引数に配列変数を指定する from インストラクターのネタ帳
Excel(エクセル)VBA(Visual Basic for Applications)で、ワークシート関数・AVARAGEの引数に配列を指定するサンプ...
テキストファイルを読み込んでワークシートへデータを書き出すExcelマクロ from インストラクターのネタ帳
テキストファイルのデータを読み込んで、ワークシートに書き出すExcel(エクセル)マクロに書き出すマクロをご紹介しています。

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 2次元配列にセルのデータを格納するExcelマクロ

「配列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.