ExcelVBA

配列をEraseで初期化する【ExcelVBA】

構文

Erase (arraylist)

引数arraylist初期化する配列を指定

Eraseで配列を初期化する

'■Eraseで要素をクリアする
Sub sample_Array_Erase()
    Dim arr1(2) As Long
    Dim arr2 As Variant
    
    '■静的配列の場合は、初期化される(データ型によって初期値は異なる)
    arr1(0) = 1
    arr1(1) = 2
    arr1(2) = 3
    
    Erase arr1
    
    '■初期化Long型なので0が初期値
    MsgBox arr1(0) '1ではなく0
    MsgBox arr1(1) '2ではなく0
    MsgBox arr1(2) '3ではなく0
    

    '■動的配列の場合は、メモリ解放される
    ReDim arr2(1)

    arr2(0) = 1
    arr2(1) = 2
    
    Erase arr2
    
    '■「実行時エラー9 インデックスが有効範囲にありません」エラーポップアップが表示
    MsgBox arr2(0)
    MsgBox arr2(1)
  '■動的配列を再利用するには、再度 ReDim ステートメントで再定義しましょう
End Sub

各配列の方の初期値

配列の型(静的)初期値データ型例
数値型0IntegerやLong等
文字列型(可変長)“”  (長さ0の文字列)String
文字列型(固定長)0String*10
バリアント(Variant)型EmptyVariant
ユーザー定義型各要素は別々の変数として設定ユーザー定義
オブジェクト(Object)型NothingObject

※動的配列の場合は、メモリ解放されるので初期値の概念はありません
Redimや Redim Preserveで再定義しましょう。
配列の宣言(静的/動的/1次元/2次元)【ExcelVBA】

その他

  • Eraseステートメントは一次元配列、二次元配列でも動作は変わりません。
  • 動的配列はEraseではなく、再定義する(Redim/Redim Preserve)と覚えましょう。

コメント

タイトルとURLをコピーしました