Eraseの概要
配列のデータをクリアし、メモリを解放する VBAの予約語 | ||
Erase 概要 Erase ステートメントは、VBAで配列のデータをクリアするために使用されます。静的配列と動的配列では動作が異なり、静的配列はすべての要素を初期値にリセットし、動的配列はメモリを解放して配列を空にします。 わかりやすく説明 配列の中身をリセットし、必要に応じてメモリを解放する命令。 |
||
|
Eraseを使った静的配列のクリア
以下の例では、Erase を使って静的配列のデータをリセットします。
Sub TestEraseStaticArray()
Dim arr(1 To 5) As Integer
Dim i As Integer
' 配列にデータを設定
For i = 1 To 5
arr(i) = i * 10
Next i
' Eraseでリセット
Erase arr
' 結果を表示
MsgBox "arr(1) の値: " & arr(1) ' 0 になる
End Sub
解説:
Erase arr
により、配列の要素が初期値にリセットされる。- Integer 型の配列なので、すべての要素が 0 になる。
- 配列のサイズ(1~5)は変わらない。
Eraseを使った動的配列のクリア
以下の例では、Erase を使って動的配列を解放します。
Sub TestEraseDynamicArray()
Dim arr() As Integer
Dim i As Integer
' 動的配列を再定義
ReDim arr(1 To 5)
' 配列にデータを設定
For i = 1 To 5
arr(i) = i * 10
Next i
' Eraseでメモリ解放
Erase arr
' 配列が空になったため、再利用時は再度 ReDim が必要
ReDim arr(1 To 3)
MsgBox "配列のサイズを変更しました(1~3)"
End Sub
解説:
- 動的配列は
Erase arr
で完全に解放される。 - 配列を再利用する場合は
ReDim
で再定義が必要。
Excel VBAでのEraseの活用
Excelのセルデータを配列に格納し、処理後に配列をクリアする例です。
Sub LoadAndClearArray()
Dim arr() As Variant
Dim lastRow As Integer
' 最終行を取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 配列にセル範囲を格納
arr = Range("A1:A" & lastRow).Value
' 処理を実行
MsgBox "データを配列に格納しました。"
' 配列をクリア
Erase arr
MsgBox "配列をクリアしました。"
End Sub
解説:
- ExcelのA列のデータを配列に格納。
- 処理が終わったら
Erase
で配列をクリア。
Eraseの注意事項
- 静的配列ではデータのみがリセットされ、サイズは変わらない。
- 動的配列は完全に解放され、再利用には ReDim が必要。
- オブジェクト配列の場合、Erase は使用できない(Set を使って解放する)。
よくある質問
- Q: Erase の後に配列のサイズを取得できますか?
- A: 動的配列は解放されるため、サイズを取得するとエラーになります。
- Q: Erase はオブジェクトの配列にも使えますか?
- A: いいえ。オブジェクトの配列は
Set
を使って個別に解放する必要があります。 - Q: 配列を再利用するにはどうすればいいですか?
- A: 動的配列の場合は
ReDim
を使って再定義してください。
まとめ
- Erase は配列のデータをクリアするためのステートメント。
- 静的配列は要素が初期化されるが、サイズは変わらない。
- 動的配列はメモリが解放され、再利用には
ReDim
が必要。 - Excel VBAでデータを一時的に格納する場合などに活用できる。