If 条件 then
dim arry(2)
arry(0)="null"
arry(1)="null"
arry(2)="null"
else
if 条件 then
dim arry(2)
arry(0)="0"
arry(1)="0"
arry(2)="0"
elseif y(0)="1" then
arry=split(x,",")
end if
end if
と書いてみたのですが、arryのところで「名前が二重に定義されています」というエラーが出てしまいます。自分としてはif文の条件にあてはまらない限り中の処理を実行しないため、二重に定義してはいないと思っているのですが間違っているのでしょうか?
if文の外に dim arry(2) と1回だけ宣言すればこのエラーは出なくなりますが今度はsplitの処理のところで「型が一致しません」というエラーが出ます。
これの原因または回避方法を教えてください。
anyを単純なバリアント型として宣言しておきましょう
配列でアクセスしたい場合は Redimで要素数を指定してから使います
Splitで分解する場合はRedimは使用しません
dim arry
If 条件 then
redim arry(2)
arry(0)="null"
arry(1)="null"
arry(2)="null"
else
if 条件 then
redim arry(2)
arry(0)="0"
arry(1)="0"
arry(2)="0"
elseif y(0)="1" then
arry=split(x,",")
end if
end if
質問者
お礼
回答ありがとうございます。参考にさせていただきます。
dim arry(2)
If 条件 then
arry(0)="null"
arry(1)="null"
arry(2)="null"
else
if 条件 then
arry(0)="0"
arry(1)="0"
arry(2)="0"
elseif 条件 then
z=split(x,",")
arry(0)=z(0)
arry(1)=z(1)
arry(2)=z(2)
end if
end if
という感じで、split処理の部分は別の配列を用意してその要素を代入するという形にして見ました。
回答ありがとうございます。
If 条件1 then
dim arry(2) ・・・*1
arry(0)="null"
arry(1)="null"
arry(2)="null"
else
if 条件2 then
dim arry(2) ・・・*2
arry(0)="0"
arry(1)="0"
arry(2)="0"
elseif 条件3 then
arry=split(x,",")
end if
end if
と言う場合、条件1の中に入っていったときに、*1をコメントアウトすると「型の不一致」が出ます。*1ではなく*2をコメントアウトすれば正常に動作します。
条件2の中に入っているときに*1のみコメントアウトすると正常に動作し、*2のみコメントアウトすると「型の不一致」になります。
恐らく、if内でも配列の初期化はできているのではと思うのですが。
お礼
回答ありがとうございます。参考にさせていただきます。 dim arry(2) If 条件 then arry(0)="null" arry(1)="null" arry(2)="null" else if 条件 then arry(0)="0" arry(1)="0" arry(2)="0" elseif 条件 then z=split(x,",") arry(0)=z(0) arry(1)=z(1) arry(2)=z(2) end if end if という感じで、split処理の部分は別の配列を用意してその要素を代入するという形にして見ました。