Home » エクセルマクロ・Excel VBAの使い方 » 配列 » Rangeと2次元配列のFor Each~Nextループの順番

Rangeと2次元配列のFor Each~Nextループの順番

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

セル範囲の値を簡単に2次元配列にできることは、ある程度Excel VBAを使っている方ならご存知のはずです。

この2次元配列にした場合と、セル範囲直接の場合で、For Each~Nextループを回したときに処理する順番が異なることをご存知ない方もいらっしゃるようですので、記事にしておきます。

Rangeと2次元配列のFor Each~Nextループの順番

上図のように
 A1:C1セルに「い」「ろ」「は」
 A2:C2セルに「松」「竹」「梅」
と入力しておいて確認してみましょう。

[スポンサードリンク]

RangeオブジェクトをFor Each~Nextループで処理するサンプルマクロ

以下のSubプロシージャを実行すると、
 「い」「ろ」「は」「松」「竹」「梅」
の順番にメッセージが表示されます。
Sub ForEachの順序_Rangeオブジェクト()
 Dim rng As Range
 
 For Each rng In Range("A1:C2")
  MsgBox rng.Value
 Next rng
End Sub

アルファベットの「z」を書くのと同じような順番に処理されるということです。

Variant型変数に代入して作られた2次配列元をFor Each~Nextループで処理するサンプルマクロ

これに対して以下のSubプロシージャを実行すると、
 「い」「松」「ろ」「竹」「は」「梅」
の順番にメッセージが表示されます。

Sub ForEachの順序_二次元配列の場合()
 Dim arr As Variant
 Dim itm As Variant

 arr = Range("A1:C2").Value
 For Each itm In arr
  MsgBox itm
 Next itm
End Sub

こちらは、小文字の「m」を書くのと同じような順番にメッセージが表示されます。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » Rangeと2次元配列のFor Each~Nextループの順番

「配列」の記事一覧

検索


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

.