省メモリ

使い終わった配列は、Erase ステートメントで消去すれば、メモリが節約できます。

件数がわからないものを格納

あらかじめ件数の解らないものを配列に格納しなければならない場合、動的配列が有効です。

動的配列の確保は、引数を省略して宣言します。

例)ローカル配列oArray()、グローバル配列gArray()を宣言します。
Dim oArray() As String
Public gArray() As String

動的配列を使用するには、ReDimステートメントを使ってメモリを確保しなければなりません。

例)oArrayは、初期設定して100個確保、gArrayは、前の値を保存したまま100個確保します。

ReDim oArray(100)
ReDim Preserve gArray(100)

配列の初期設定を簡単に、しかも高速にする

あらかじめ件数の解っているものでも、動的配列にしておけば、ReDimステートメントを実行することで、初期設定をすることができます。For...Next でまわすよりも、高速です。 このばあい、100という数値で宣言するのではなく、リテラル値を宣言して、それを使って下さい。

Private Const ocMaxArray As Long = 100
ReDim oArray(ocMaxArray)

次の例では、pArrayという配列に、C:\TEST ディレクトリ下の*.txtファイルの名称を格納しています。

   Dim pFile As String
   Dim pArray() As String
   Dim pCount As Long
   ReDim pArray(0)                         ' 配列をメモリに確保します
   pFile = Dir("C:\TEST\*.txt")
   Do Until pFile = ""
       pCount = pCount + 1
       If pCount > UBound(pArray) Then               ' 配列の数が足らなくなったら
          ReDim Preserve pArray(pCount + 10)           ' 10個余分に確保します
       End If
       pArray(pCount) = pFile
       pFile = Dir()
   Loop

Preserveを指定したReDimステートメントは、配列が大きくなればなるほど速度が低下します。 これは、別のメモリ領域に配列が確保され、コピーが行われるためです。 ちょっとした気配りで、プログラムは高速に動作します。




トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-10-25 (日) 23:55:58 (2920d)