エクセルVBA 配列を扱うときに利用できる関数とステートメントを説明していきます。
便利機能が多くありますので、配列を使う時の知識の引き出しとして覚えておくと良いかと思います。
エクセルVBAで配列を利用する時、それに関わる関数やステートメントを利用すれば、
より簡潔にコードを作成することが出来ます。
こんにちは、じゅんぱ店長(@junpa33)です。
コンテンツ
Array・LBound・RBound関数と
各ステートメントを最速に理解
先の記事で1次元配列変数について紹介しました。
配列には関連するいくつかの関数とステートメントやキーワードがあります。
それらを使えば、コード作成でより簡単にやりたいことを行うことが出来ます。
ステートメントについては
キーワードについては
などになります。
簡単にサクッと説明をしていきたいと思います。


Array関数
配列をバリアント型変数に格納する時は、Array関数を使って行うことが出来ます。
LBound関数とUBound関数
配列のインデックス番号を調べる関数です。
この2つはセットで使うことが多いです。
- LBound関数は、インデックス番号の最小値
- UBound関数は、インデックス番号の最大値
を表示します。
Option Baseステートメント
配列のインデックス番号のスタートを指定します。
デフォルトではインデックス番号は「0」から始まりますが、このステートメントを使えば、「1」から始めることが出来ます。
ただし、モジュール内の宣言セクションに記述しますので、モジュール全体に影響が及びます。
インデックス番号0は割り当てられていないので、セルC1の値はありません。
Option Base 1
Sub OpBaseテスト()
Dim vege As Variant
Worksheets("Sheet2").Select
vege = Array("きゅうり", "玉ねぎ", "ピーマン")
On Error Resume Next
Range("C1").Value = vege(0)
Range("C2").Value = vege(1)
Range("C3").Value = vege(2)
Range("C4").Value = vege(3)
End Sub
実行結果
インデックス番号「0」(vege(0))もコードを残しているので、本来ならこの部分でエラーが発生します。
エラーを無視するコード「On Error Resume Next」を記述してコードの停止を回避しています。
Eraseステートメント
Eraseステートメントは配列の値をクリアします。
Eraseステートメントの働きを見るために、D列とE列に値を表示させます。
Sub Eraseテスト()
Dim vege(2) As Variant
Dim i As Long
Worksheets("Sheet2").Select
vege(0) = "きゅうり"
vege(1) = "玉ねぎ"
vege(2) = "ピーマン"
For i = 0 To 2
Range("D" & i + 1).Value = vege(i)
Next i
Erase vege
For i = 0 To 2
Range("E" & i + 1).Value = vege(i)
Range("E4").Value = "配列の値はクリアされました"
Next i
End Sub
実行結果
赤枠に表示されるべき値がEraseステートメントによってクリアされました。
ReDimステートメント
ReDimステートメントは「動的配列」では、必ず必要な、配列の再宣言のためのステートメントです。
例題は、先の記事で確認をしてください.。
Toキーワード
配列変数を宣言する時に、インデックス番号を「(始まり)TO(終わり)」という風に表記する時に使います。
Toキーワードを利用することによって、インデックス番号の開始番号を変更することが出来ます。
Sub Toテスト()
Dim vege(1 To 3) As String
Dim i As Long
Worksheets("Sheet2").Select
vege(1) = "きゅうり"
vege(2) = "玉ねぎ"
vege(3) = "ピーマン"
For i = 1 To 3
Range("F" & i).Value = vege(i)
Next i
End Sub
実行結果
Option Baseステートメントでもインデックス番号を「1」から始めることが出来ますが、
そのモジュール内のすべての配列変数に影響を及ぼします。
このToキーワードを使えば、このようにこの部分にだけ作用しますので、
特にこちらを利用するようにした方がいいかと思います。
Preserveキーワード
一旦配列変数に格納したデータに、さらに追加で別データを、その配列変数に格納する時に使うキーワードです。
元の格納データをA列に、追加で格納するデータをB列に表示するようにコードを組み立てました。
Sub Preserveテスト()
Dim vege() As String
Dim i As Long, j As Long
Worksheets("Sheet2").Select
ReDim vege(2)
vege(0) = "きゅうり"
vege(1) = "玉ねぎ"
vege(2) = "ピーマン"
For i = 0 To 2
Range("A" & i + 11).Value = vege(i)
Next i
ReDim Preserve vege(2 + 3)
vege(3) = "キャベツ"
vege(4) = "ニンジン"
vege(5) = "じゃがいも"
For j = 3 To 5
Range("B" & j + 11).Value = vege(j)
Next j
End Sub
実行結果
正常に配列に追加分が格納され、B列に表示されました。
配列に関わる関数とステートメントのまとめ
解説してきましたこの様なオプションで、配列変数をより使いやすく、コード作成を簡便に行って行ければと思います。
その他にも、使えそうな関数などがあると思いますが、メインどころでこの辺りかと思います。
皆さんそれぞれに研究いただければと思います。
配列の基本を押さえておけば、後は徐々に追加の知識を増やして行けると思います。
短期間でエクセルVBAの独学習得を目指したいなら
エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、
出来るだけ多くの実例に触れること!
です。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
このサイトでよく使うVBAのコードのトピックを纏めています。
今回の記事はここまでです。 最後までご覧いただき有難うございました。