• ベストアンサー

配列を初期化する時ってどうすればいいですか?

Dim test() As String や Dim test As Variant で、宣言した配列を初期化する時ってどうすればいいですか? test="" test=Null test= Empty test= = Nothing は、エラーになります。

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。 場合によって意味が違ったりするので、サンプル3種。 ' ' /// Sub Re8377795a() ' Variant型変数に動的配列 Dim test As Variant Dim i As Long ReDim test(65 To 90) As String '  初期化、次元(サイズ)を再定義 For i = 65 To 90 test(i) = Chr(i) Next i MsgBox "■" & Join(test) & "■" ReDim test(65 To 90) '  再初期化 MsgBox "■" & Join(test) & "■" Erase test '  メモリ解放 MsgBox "■" & Join(test) & "■" End Sub Sub Re8377795b() ' 動的配列 ' Dim test() As Variant Dim test() As String Dim i As Long ReDim test(65 To 90) '  初期化、次元(サイズ)を再定義 For i = 65 To 90 test(i) = Chr(i) Next i MsgBox "■" & Join(test()) & "■" ReDim test(65 To 90) '  再初期化 MsgBox "■" & Join(test()) & "■" Erase test() '  メモリ解放 MsgBox "■" & Join(test()) & "■" End Sub Sub Re8377795c() ' 静的配列 ' Dim test(65 To 90) As Variant '  初期化、次元(サイズ)を定義 Dim test(65 To 90) As String '  初期化、次元(サイズ)を定義 Dim i As Long For i = 65 To 90 test(i) = Chr(i) Next i MsgBox "■" & Join(test()) & "■" Erase test() '  再初期化 MsgBox "■" & Join(test()) & "■" End Sub ' ' /// 〓以下、VBAヘルプ「Erase ステートメント」「解説」より抜粋引用〓  <配列の型>          <Erase ステートメントの実行結果> 静的数値配列           要素はすべて 0 に設定されます。 静的文字列配列 (可変長)     要素はすべて長さ 0 の文字列 ("") に設定されます。 静的文字列配列 (固定長)     要素はすべて 0 に設定されます。 静的バリアント型 (Variant) 配列 要素はすべて Empty 値に設定されます。 ユーザー定義型配列       各要素は、別個の変数として設定されます。 オブジェクト配列        要素はすべて特別な値 Nothing に設定されます。 〓以上、引用〓 因みに、上記サンプル b、c で出てくる test() については、 単に test と省略して書いても動きますが、配列であることを明示する意味で 変数の末尾に()を付けることが推奨されています。 (Dim test() As ... のように動的配列を宣言する場合は無論、()は省略できませんが) とりあえず、以上です。

CEMQYCSDELUFK
質問者

お礼

ありがとうございます。

その他の回答 (2)

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.3

空の配列をつくりたいと言う事なのかな。 この辺とか。

参考URL:
http://www42.atwiki.jp/jfactory/m/pages/67.html
CEMQYCSDELUFK
質問者

お礼

ありがとうございます。

  • maia55jp
  • ベストアンサー率61% (327/535)
回答No.1

>Dim test() As String >Dim test As Variant この状態で、動的変数を使う宣言をしているだけで実態はありません。 testと言う箱を使うよで、箱自体は無い状態、VBの場合、何も割り当て されていない状態になっています。 ReDim test(10)等の動的割当をした段階で初期化可能になります 配列変数の利用 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_070_07.html

CEMQYCSDELUFK
質問者

お礼

ありがとうございます。