- ベストアンサー
配列を初期化する時ってどうすればいいですか?
Dim test() As String や Dim test As Variant で、宣言した配列を初期化する時ってどうすればいいですか? test="" test=Null test= Empty test= = Nothing は、エラーになります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 場合によって意味が違ったりするので、サンプル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 ... のように動的配列を宣言する場合は無論、()は省略できませんが) とりあえず、以上です。
その他の回答 (2)
- kumatti1
- ベストアンサー率60% (73/121)
空の配列をつくりたいと言う事なのかな。 この辺とか。
お礼
ありがとうございます。
- maia55jp
- ベストアンサー率61% (327/535)
>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
お礼
ありがとうございます。
お礼
ありがとうございます。