Variant型変数に配列を入れるメモ
このへんがピンときていないので,備忘録。
variantにはいろいろ入れれるけど,いろいろ入れれるからといって
Dim arr as Variant
と書いた後,自分だけ配列になってくれと祈りながら
arr(0)="なんとか"
とか入れても怒られます。
人生トライアンドエラーで生きてますから,わたしもこれが不思議でしょうがない。
でも,プログラマーの人からみたら,オマエナニイッテルンダ!?と思われることなんだろうなぁと,いちおう自覚はしています。。
DirectoryオブジェクトがKeysやItemsをVariantで返してきたりするんですよね,API関数とかもそういうやつがいた気がする。
いろいろやってると,variantで配列を返してきて,それをやりたくてしょうがない。
何かで読んだわけでもなく,経験で学んでこうなんだろう,という程度の知識ですが,当たり前といえば当たり前ですが,
配列をきちんと作って,最後にそれをvariantに入れてあげると,どうもVBAは怒らないようなんですね。
Sub a() Dim StringArray(1 To 5) As String StringArray(1) = "(゚▽゚*)" StringArray(2) = "( ̄∇ ̄;)ハッハッハ" StringArray(3) = "(ΦωΦ)" StringArray(4) = "( *´艸`)" StringArray(5) = "(´▽`) '`,、'`,、" Dim arr As Variant arr = StringArray Stop End Sub
これを実行すると,
うまく入ってる。
何番から何番まで覚えろとか言ってないのに,きちんと覚える。
逆に言えば,変なデータが配列に入ってたらそれ込みで入っちゃうともいえる。
でも,まぁそれは気を付ければいいだけの話なので,
こんな感じできちんと配列を設計して出来上がった配列をインデックスの部分抜きでVariant宣言した変数に入れるとオッケー
と,今の私は認識しています。
間違ってたらきっと誰か指摘してくれる・・はず(;´▽`A``
とりあえず使えているので,忘れないように書き留めておきました。
追記 imihitoさんから,アドバイスがありました。 ほんと,お二人にはいつもいろいろと教えてもらえる。
わざわざ配列を別に準備して放り込まなくても,
Dim arr as variant
Redim arr(4,3) as string '4と3はテキトーに書いた例です
と書くと,arrは二次配列になるし,中身の型も宣言できるようです。
今まで無駄に書いていたものがあったことになりますね。
今までのを書きなおしていったりはしませんが,今後は参考にさせてもらって,コードを書いていこうと思います(ΦωΦ)
ほんと,ありがたい。ここ1~2ヶ月で知識とやれることが増えたのはimihitoさん,thomさんお二人から得た知識が極めて大きいです。_(._.)_