トップページ⇒tech
28コメント6KB

VBのVariantってどうよ。

■ このスレッドは過去ログ倉庫に格納されています
0001VBマニアNGNG
Dim a() As Variant
a = Split("1,2,3", ",")
は型不一致エラーになるのに
Dim a As Variant
a = Split("1,2,3", ",")
は型不一致エラーにならない。
こんなVariant型ってなんか不思議?
それとも常識?
0022デフォルトの名無しさんNGNG
>>21
それは、ちょっと違う。(strURL) とすると式となるから、strURL の
中身が、仮引数の型に変換されるから問題なくなるだけ。
例えば...

Private Sub Bar(ByRef X As Single)
...
End Sub

Private Sub Foo()
 Dim Y As Integer
 Bar Y ' これは、エラーになる
Bar (Y) ' これは、OK
End Sub

と同じ。つーか、これこそ常識だと思うが...。
0023デフォルトの名無しさんNGNG
議論期待あげ

0024デフォルトの名無しさんNGNG
ポケコンジャーナルなつかしい
0025デフォルトの名無しさんNGNG
Variantとはスンバラシィものナリ
0026デフォルトの名無しさんNGNG
Variant逝ってよし!
0027デフォルトの名無しさんNGNG
1じゃないけど、
>>6
>1. a(0) だけ確保して、それに array("1", "2", "3") を代入。
>2. a(0 To 2) を確保して、a(0) = "1": a(1) = "2": a(2) = "3" とする。
>
>のどっちをやったら良いかわかんないからだろうな。

splitの動作は標準では 2 になるはずだぞ。
1は、StringやIntegerでは 2 の動作になるのにVariantはそうならないから
おかしい、と言っているんだと思う

本当にそうならんのかは試してないので知らん
00286NGNG
>>27
> splitの動作は標準では 2 になるはずだぞ。
Split() が配列を確保するわけではないよ。Split("1,2,3", ",") の結果は、
("1", "2", "3") の要素を含んだ配列となるけど、それを Dim A() As Variant
にどう格納するかが問題。String や Integer なら「>>6 の 2 の動作」しか取
りえないから問題ないけど。Variant は 1 と 2 の両方できるから、とりあえず
エラーにしてるいると思う。
■ このスレッドは過去ログ倉庫に格納されています