項目

配列を初期化する(Erase)

Option Compare Database
Option Explicit

'-------------------------------------------------
' 配列を初期化する(Erase)
'-------------------------------------------------
Sub 配列初期化()

    Dim i            As Integer
    
    '--------------------------------------
    Debug.Print "静的数値配列"
    '--------------------------------------
    
    Dim intArray(10) As Integer
    
    For i = LBound(intArray) To UBound(intArray)
        intArray(i) = i
        Debug.Print intArray(i)
    Next
    
    Debug.Print "■ 0に再初期化"

    Erase intArray
    
    For i = LBound(intArray) To UBound(intArray)
        Debug.Print intArray(i)
    Next
    
    '--------------------------------------
    Debug.Print "静的文字列配列 (可変長)"
    '--------------------------------------
    Dim strArray(10) As String
    
    For i = LBound(strArray) To UBound(strArray)
        strArray(i) = Chr(65 + i)
        Debug.Print strArray(i)
    Next
    
    Debug.Print "■ 長さ0の文字列に初期化"

    Erase strArray
    
    For i = LBound(strArray) To UBound(strArray)
        Debug.Print strArray(i)
    Next
    
    '--------------------------------------
    Debug.Print "静的文字列配列 (固定長)"
    '--------------------------------------
    Dim strFixArray(10) As String * 3
    
    For i = LBound(strFixArray) To UBound(strFixArray)
        strFixArray(i) = Chr(65 + i) & Chr(66 + i) & Chr(67 + i)
        Debug.Print strFixArray(i)
    Next
    
    Debug.Print "■ 指定した長さのスペースに初期化"

    Erase strFixArray
    
    For i = LBound(strFixArray) To UBound(strFixArray)
        Debug.Print Len(strFixArray(i))
    Next
    
    '--------------------------------------
    Debug.Print "動的数値配列"
    '--------------------------------------
    Dim intDynamicArray() As Integer
    
    ReDim intDynamicArray(5)
    
    Debug.Print UBound(intDynamicArray)
    
    Debug.Print "■ メモリを解放"
    
    Erase intDynamicArray
    
    '※ 「インデックスが有効範囲にありません。」で落ちる。
    'Debug.Print UBound(intDynamicArray)
    
End Sub