• ベストアンサー

配列のメリットは?

下記のコードは同じ動作をします。 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 こういう場合は配列を使ったほうがいいのでしょうか? それとも配列は避けたほうがいいのでしょうか?

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

  • ベストアンサー
  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.1

こんばんは  ホントにホントに私見ですが..  質問者さんの例題ていどであれば、どちらでもいい。  もしくは、配列を無理して使わなくてもOk。  配列ってエクセルの表とよく似ています。  分類するほどの要素がないとか、集計の省力化に寄与できないなら使う意味がないような気がします(^^;

ijuhyg
質問者

お礼

確かにこの例題では配列を使うメリットはありませんね 笑 ありがとうございます。

その他の回答 (2)

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

こんばんは。 通常、ワークシートの場合は、一旦、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次配列になりますから、その分はややこしくなります。

ijuhyg
質問者

お礼

ありがとうございます。

  • ESE_SE
  • ベストアンサー率34% (157/458)
回答No.2

No.1の方の回答で概ね間違いはありません。 例えばExcelの表から数千カラムの要素を拾ってくるコードを書くとすると、 配列を使わなければ変数を数千個用意しないといけませんが 配列を使うと Dim moji(10000) as String で宣言完了です。 特定の箇所の要素を拾ってくる場合も msgbox moji(5379) だけで指定して拾って来れます。 やっぱり配列は数十個以上の要素を扱うときに力を発揮する機能ですね。

ijuhyg
質問者

お礼

配列を使うと宣言が簡単ですね。 ありがとうございます。