配列の数について

解決


hide  2003-08-19 20:44:57  No: 79071

VB初心者のhideです。
早速質問させてください。
現在
  Dim test() as string
と宣言しています。
  ReDim Test(0)
  Msgbox UBound(Test)  --> 0
  ReDim Test(1)
  Msgbox UBound(Test)  --> 1
と表示されます。
しかし、ReDimを行わない場合
例えば...
  Dim test() as string
  msgbox UBound(Test)  --> インデックスが有効範囲にありません
となってしまい、エラーとなります。
これって何か判断する事が出来ないのでしょうか?

ようするに、配列が1つも作成されていない場合を
知りたいのです。

例えば
  if Test = Null then
    Msgbox "配列が作成されていません!"
  else
    Msgbox "配列は" & CStr(UBound(Test)+1) & "個作成されています。"
  end if

こんな風に実現できますでしょうか?


魔界の仮面弁士  2003-08-19 21:06:52  No: 79072

そのままでは、エラートラップで処理するか、
もしくは、SAFE配列系APIで判定するしかありません。

しかし、予め「空の配列」として初期化しておく事で、
コーディングを楽に進めることができます。

データ型によって、使用すべき関数が異なりますが、
  Dim S() As String
  S = Split("")

  Dim V() As Variant
  V = Array()

  Dim O() As Object
  VarType O

  Dim B() As Byte
  B = ""
などとする事で、要素数がゼロでありながら、LBound/UBoundを使っても、
エラーが出ないようになります。


hide  2003-08-19 21:33:51  No: 79073

魔界の仮面弁士さん!早々のレス有難うございます。
思っていたような処理を行う事が出来ました。
感謝!感謝!ですm(_'_)m

エラーでトラップしてたんですが
どうも美しくないので、助かりました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加