• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CollectionとArrayの呼び出し順)

CollectionとArrayの呼び出し順

このQ&Aのポイント
  • CollectionとArrayの呼び出し順について質問です。
  • 実行結果を見ると、Collectionの場合とArrayの場合で呼び出し順が異なることが分かります。
  • なぜこのような違いが生じるのか教えていただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

StudyVBA 様、こんばんは。 私は、そのどちらも、VBAのきまりのようなものだから、そう覚えるしかないのではないか、と思っています。 たぶん、データの格納の仕方だと思いますが、実際、配列の場合、For Each ~ In で使うというのは、1次元以外では、滅多に使わないのではないでしょうか?今回のような二次元の多段階配列では、確実に、For i ~ To * で、押さえていかないと、何がなんだかわからなくなってしまいます。 それ以外では、配列の形を崩さないままで、ワークシート上に貼り付けをしてしまうか、どちらかですね。 それから、今回のような最初のデータは、たぶん、Rangeオブジェクトには違いないと思います。Collection のサンプルを作りました。1次元に格納されます。 Sub Test2()  Dim Rng As Range  Dim myRange As Range  Dim MyCollection As Collection  Dim i As Long  Set MyCollection = New Collection  Set myRange = Range("A1").CurrentRegion  i = 1  For Each Rng In myRange   MyCollection.Add Rng.Value   Debug.Print MyCollection(i)   i = i + 1  Next Rng End Sub 何の回答にもなっていませんね。すみません。

StudyVBA
質問者

お礼

こんにちは。 Wendy02さん、いつも丁寧、かつ的を射た回答ありがとうございます。 それにサンプルまで。 やはり質問の件は仕様なのでしょうね。Wendy02さんもそう思われるということですので安心しました。 また、 >For Each ~ In で使うというのは、1次元以外では、滅多に使わないのではないでしょうか?今回のような二次元の多段階配列では、確実に、For i ~ To * で、押さえていかないと、何がなんだかわからなくなってしまいます。 これは仰るとおりだと思います。 ただ今回の件はたまたまFor Eachのヘルプを見てまして、今までは専らCollectionでしか使ったことありませんでしたので、配列ではどうなるかと試したところ結果が違いましたので質問させていただきました。 それから今朝、今度は二次元配列を宣言し、値をコードでセットし、それをFor Eachで試したところ結果は同じでした。 For Eachで配列を呼び出すと次元の高い方から呼び出される、ということが分かっただけで収穫でした。 Wendy02さん、またアホウな質問をするとは思いますが今まで同様、宜しくお願いいたします。 今回も貴重な時間を割いて頂きありがとうございました。  

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

訂正します。 >たぶん、Rangeオブジェクトには違いないと思います。 オブジェクト・コレクション(Object Collection)と呼ぶそうですね。失礼しました。訂正しておきます。

StudyVBA
質問者

お礼

わざわさ、ありがとうございます。 これからも宜しくお願いいたします。

関連するQ&A