Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 配列の再初期化を行う-Eraseステートメント

配列の再初期化を行う-Eraseステートメント

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「配列 中身 消す vba」
「excel vbaの配列に残ったデータを消す」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

VBA(Visual Basic for Applications)で配列の再初期化を行うには、どのようなコードを書けばいいのかを探していた方による検索です。

まずは結論を。
VBAで配列の再初期化を行うには、Eraseステートメントを使ってください。

[スポンサードリンク]

Eraseで静的配列の再初期化を行うサンプルマクロ

以下のようなマクロで、静的配列を再初期化する様子が確認できます。

Sub 配列の再初期化_静的配列()

 Dim arr(1 To 3) As String

 arr(1) = "松"
 arr(2) = "竹"
 arr(3) = "梅"
 Stop

 Erase arr
 Stop

End Sub

1つ目のStopステートメントの箇所で、ステップ実行モードになりますから、ローカルウィンドウで配列の中身を確認すると、下図のように「松」「竹」「梅」という文字列が格納されていることが確認できます。

配列の再初期化を行う-Eraseステートメント

[F5]キーを押して実行を継続して、2つ目のStopステートメントで一時停止したときには、Eraseステートメントで配列変数・arrが再初期化され、下図のように空白文字列が格納されていることを確認できます。

配列の再初期化を行う-Eraseステートメント

Eraseで動的配列の再初期化を行うサンプルマクロ

動的配列の場合、Eraseステートメントを実行したあとの様子が、静的配列の場合とは少々違います。

Sub 配列の再初期化_動的配列()

 Dim arr() As String

 ReDim arr(1 To 3)

 arr(1) = "松"
 arr(2) = "竹"
 arr(3) = "梅"
 Stop

 Erase arr
 Stop

End Sub

1つ目のStopステートメントの箇所は、先ほどの静的配列の場合と同じですけれど、Erase実行後の2つ目のStopステートメントでは下図のようになっています。

配列の再初期化を行う-Eraseステートメント

先の静的配列の場合、Eraseしても配列要素のメモリは確保されたままだったわけですが、動的配列の場合は、配列要素のメモリの解放まで行われているということです。

「配列 中身 消す vba」
「excel vbaの配列に残ったデータを消す」
といった検索をなさった方が、何のために配列の再初期化をしようとしていたのかがわかりませんので、これ以上のことは語れませんがErase後にどのような状態になるのかを確認した上で、Eraseステートメントを使ってください。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 配列の再初期化を行う-Eraseステートメント

「配列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.