配列の各要素にはFor Each ~ Nextでアクセスできる

配列の各要素にFor Each ~ Nextでアクセスする

配列の要素にはFor Each ~ Nextでアクセスできる

akashi-keirin.hatenablog.com

コチラに jinoji さんという方からいただいたコメント。

配列からの取り出しを
For Each e In TargetArray
とやれば2次元配列でもいけるかな?

とのこと。

なにーーーーーっ!知らんかった……。

勝手にCollectionだけだと思っていました……。

やってみた

下記のコードで実験

リスト1 標準モジュール
Public Sub testGetEachValueFromArray()
  Dim ar(3) As String    '……(1)'
  ar(0) = "アホ"
  ar(1) = "ボケ"
  ar(2) = "クズ"
  ar(3) = "デコスケ"
  Dim el As Variant    '……(*)'
  For Each el In ar    '……(2)'
    Debug.Print el
  Next
End Sub

(1)からの3行

Dim ar(3) As String
ar(0) = "アホ"
ar(1) = "ボケ"
ar(2) = "クズ"
ar(3) = "デコスケ"

で要素数 4 のString型配列を用意して、(2)からの3行

For Each el In ar
  Debug.Print el
Next

では、For Eachでそれぞれの要素にアクセスしてイミディエイトに表示する。

実行結果

f:id:akashi_keirin:20180318073401j:plain

普通に全要素にアクセスできている。

ちなみに、リスト1の(*)のところ、

Dim el As Variant

要素取り出し用の変数「el」をVariant型にしているが、これを配列の型に合わせて

Dim el As String

とすると、

f:id:akashi_keirin:20180318073408j:plain

このようにコンパイル・エラーになるので注意。

おわりに

初歩的なことでも、まだ知らないことが多いものだなあ。

@akashi_keirin on Twitter