重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Dim test() As String

Dim test As Variant

で、宣言した配列を初期化する時ってどうすればいいですか?

test=""
test=Null
test= Empty
test= = Nothing

は、エラーになります。

A 回答 (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 ... のように動的配列を宣言する場合は無論、()は省略できませんが)

とりあえず、以上です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/12/27 22:38

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


この辺とか。

参考URL:http://www42.atwiki.jp/jfactory/m/pages/67.html
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/12/27 22:38

>Dim test() As String


>Dim test As Variant
この状態で、動的変数を使う宣言をしているだけで実態はありません。
testと言う箱を使うよで、箱自体は無い状態、VBの場合、何も割り当て
されていない状態になっています。

ReDim test(10)等の動的割当をした段階で初期化可能になります

配列変数の利用
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub0 …
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/12/27 22:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!