エクセルバージョン
マイクロソフト365
本日は配列の削除を実施したいと思います。
それではいってみましょう!
Menu
配列を削除
Eraseステートメント
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Sub 配列を削除する() Dim ary(), i As Integer '➀5個の配列作成 Do ReDim Preserve ary(i) ary(i) = i + 1 i = i + 1 Loop While i < 5 '➁配列初期化 Erase ary End Sub |
【解説】
➀配列を作成します。
➁Eraseステートメントで配列が初期化され削除されます。
Erase 配列名
配列の要素のみを削除
型指定で固定バリアント (Variant)型 を指定した場合、各要素をEmpty(空)にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 | Sub 配列の要素のみ削除() Dim ary() As Variant Dim i As Integer '➀1~5の配列作成 ary = Array(1, 2, 3, 4, 5) '➁Redimで再定義して要素のみEmpty For i = 0 To UBound(ary) ReDim ary(i) Next End Sub |
【解説】
➀1~5の配列を作成します。
➁For文で繰り返し処理をしながら、Redimを利用して配列数をキープしながら、再定義させて要素をEmpty(空)します。
指定した配列を削除
インデックス → 3
配列要素 → 4
を削除した例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Sub 指定した配列を削除() Const DELETE As Integer = 3 '削除位置指定(インデックス) Dim ary() As Variant Dim i As Integer '➀配列作成 ary = Array(1, 2, 3, 4, 5) '➁削除する配列をコピー For i = DELETE To UBound(ary) - 1 ary(i) = ary(i + 1) Next '➂再定義して配列数を変更 ReDim Preserve ary(UBound(ary) - 1) End Sub |
【解説】
➀1~5の配列を作成します。
➁For文で指定したインデックス(3)から配列の次の値を末尾までコピーします。
今回は定数Constで指定した値のインデックスが3を指定
➂ReDim Preserveキーワードで再定義して配列数と値をキープして、-1で配列数を1つ減らして出来上がりです\(^^)/
配列の末尾を削除
末尾の削除は一つ前の指定でも削除できますが、下記の方がコードがスッキリします。
1 2 3 4 5 6 7 8 9 10 | Sub 末尾を削除() Dim ary() As Variant '①配列作成 ary = Array(1, 2, 3, 4, 5) '②再定義して配列数を変更 ReDim Preserve ary(UBound(ary) - 1) End Sub |
【解説】
➀1~5の配列を作成します。
②ReDim Preserveキーワードで再定義して値をキープしつつ、-1で配列数を1つ減らして出来上がりです(*゚▽゚)ノ
まとめ
VBAの配列の指定配列削除方法は少し特殊ですね。
以上です。