掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
要素があるかないかをどうやれば判別できるでしょうか? (ID:101813)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 配列の要素が1つもないとき、UBound(a)でエラーが出てしまいます。 要素数 0 の配列ならば、エラーにはならないはずです。 想像するに、未初期化の配列を返しているのではないでしょうか? Option Explicit Private Sub Form_Load() Dim v As Variant v = Foo() MsgBox IsArray(v) 'True MsgBox UBound(v) 'エラー9: インデックスが有効範囲にありません。 End Sub Private Function Foo() As Variant Dim V() As Variant Foo = S End Function > 要素があるかないかをどうやれば判別できるでしょうか? 可能であれば、未初期化の配列を返さないようにし、せめて 要素数ゼロの配列を返すことを検討してみてください。 要素数ゼロの配列は、たとえば下記のようにして生成できます。 これらの配列は、LBound/UBound してもエラーにならないはずです。 Dim V() As Variant V = Array() '空のVariant配列 Dim B() As Byte B = "" '空のByte配列 Dim S() As String S = Split("") '空の String 配列 Dim O() As Object VarType O もし、要素の無い配列を事前に作成しておくことができないのだとすると、 On Error で UBound をエラートラップして判定することになるでしょう。 (API で判定する方法もあるにはありますが、そこまで大袈裟にすることも無いかと)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.