エクセルマクロ オンライン講座コメント紹介

コメント紹介
   └ エクセルマクロ・VBA発展編2
       └ 多次元配列_2

多次元配列_2

[7879] 2017-03-30 12:09:20 平吹 敦史さんからの投稿です。

お世話様です。

好みの問題なのか、理由があるのか教えてください。
以下2つのsampleがあります。

結果はどちらも同じです。
違いは、配列変数の次元をどっちを先に書くかだけです。

先生の説明ですとsample1です。

個人的に理解しやすいのはsample2です。
理由は、行列のイメージに合うからです。

先生がsample1で指導される理由があり、今後の発展性も
踏まえて考えたときにどちらがベターか教えていただけると
助かります。

Sub Hairetu_Sample1()
Dim Arry(1, 12) As Variant
Dim cnt As Long
For cnt = LBound(Arry, 2) To UBound(Arry, 2)
Arry(0, cnt) = Range("C3").Offset(cnt).Value
Arry(1, cnt) = Range("D3").Offset(cnt).Value
Next

For cnt = LBound(Arry, 2) To UBound(Arry, 2)
Range("J3").Offset(cnt).Value = Arry(0, cnt)
Range("K3").Offset(cnt).Value = Arry(1, cnt)
Next
End Sub

Sub Hairetu_Sample2()
Dim Arry(12, 1) As Variant
Dim cnt As Long
For cnt = LBound(Arry, 1) To UBound(Arry, 1)
Arry(cnt, 0) = Range("C3").Offset(cnt).Value
Arry(cnt, 1) = Range("D3").Offset(cnt).Value
Next

For cnt = LBound(Arry, 1) To UBound(Arry, 1)
Range("J3").Offset(cnt).Value = Arry(cnt, 0)
Range("K3").Offset(cnt).Value = Arry(cnt, 1)
Next
End Sub

 


[7880] 2017-03-30 23:18:06 小川慶一さんからの投稿です。

平吹 敦史 さん:

たしかに、興味深いですね。
こういう質問も大歓迎です。

二次元配列にデータを格納する際、僕は、意識して、以下のようにしています。
[a-1] 第一引数は、評価項目数に基づいて設定する
[a-2] 第二引数は、データ数に基づいて設定する

これには、第二引数のほうをデータ数にしたほうが良いという前提があるからです。
その前提は、VBAの以下の性質に示されています。
[b-1] ReDim ステートメントでは、配列の引数のうち、最後の部分のサイズしか変更できない。
[b-2] そもそも、ReDim ステートメントは、プログラム実行前に評価項目数が不明な場合ではなく、プログラム実行前にデータ数が不明な場合のための機能である

まずは、ここまで、いかがでしょうか。

 


まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ