- ベストアンサー
配列のメリットは?
下記のコードは同じ動作をします。 Sub 普通() Dim moji1 As String Dim moji2 As String moji1 = Range("a1").Value moji2 = Range("a2").Value MsgBox moji1 & moji2 End Sub --------------------------------------------- Sub 配列() Dim moji(2) As String moji(1) = Range("a1").Value moji(2) = Range("a2").Value MsgBox moji(1) & moji(2) End Sub こういう場合は配列を使ったほうがいいのでしょうか? それとも配列は避けたほうがいいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは ホントにホントに私見ですが.. 質問者さんの例題ていどであれば、どちらでもいい。 もしくは、配列を無理して使わなくてもOk。 配列ってエクセルの表とよく似ています。 分類するほどの要素がないとか、集計の省力化に寄与できないなら使う意味がないような気がします(^^;
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 通常、ワークシートの場合は、一旦、Range オブジェクトに入れて、そこから値を出すように作ります。 ところが、途中で、ワークシートの行を削除したり、値を消したりすると、確保したはずの値も消えてしまいます。Rangeオブジェクトは、最後まで維持しなければなりません。 Sub Test1() Dim rng As Range For i = 1 To 3 Cells(i, 1).Value = i Next i '-------------------------- MsgBox "値を確保!" Set rng = Range("A1:A3") 'Range 型で確保 Range("A1").Delete For i = 1 To 3 msg = msg & "," & Cells(i, 1).Value Next i MsgBox Mid(msg, 2) End Sub Sub Test2() Dim ar As Variant Dim v As Variant For i = 1 To 3 Cells(i, 1).Value = i Next i '-------------------------- MsgBox "値を確保!" ar = Range("A1:A3").Value '配列で確保 Range("A1").Delete For Each v In ar msg = msg & "," & v Next v MsgBox Mid(msg, 2) End Sub >こういう場合は配列を使ったほうがいいのでしょうか? >それとも配列は避けたほうがいいのでしょうか? セルの扱いは、配列のほうが速いけれども、ワークシートでは、一次配列ではなく、2次配列になりますから、その分はややこしくなります。
お礼
ありがとうございます。
- ESE_SE
- ベストアンサー率34% (157/458)
No.1の方の回答で概ね間違いはありません。 例えばExcelの表から数千カラムの要素を拾ってくるコードを書くとすると、 配列を使わなければ変数を数千個用意しないといけませんが 配列を使うと Dim moji(10000) as String で宣言完了です。 特定の箇所の要素を拾ってくる場合も msgbox moji(5379) だけで指定して拾って来れます。 やっぱり配列は数十個以上の要素を扱うときに力を発揮する機能ですね。
お礼
配列を使うと宣言が簡単ですね。 ありがとうございます。
お礼
確かにこの例題では配列を使うメリットはありませんね 笑 ありがとうございます。