プロが教える店舗&オフィスのセキュリティ対策術

以下の場合、(1)で範囲エラーとなります。
redim a(0)とすると、a配列に1個データがあるということで、for文が実行されますが。
Redimしないまま(データが無い意味としたいので)で、このFor文をパスするには、どのように記述すればよいのでしょうか?

dim a() as string

'----->(2)
for i=LBound(a) to UBound(a) '---->(1)
msgbox(a(i))
next i

A 回答 (3件)

string限定ですが、


a=split("","A")
とか、ありえないsplitを行うとか・・・
ubound(a)=-1になります。

ちなみに、SafeArrayAllocDescriptor は、excelやaccessのvbaでもOKです。
    • good
    • 0

エラートラップするのが楽だと思いますけど・・・



毎回エラートラップするのが面倒なら、
---------------------------------------
Private Function IsBlankArray(a As Variant) As Boolean
Dim i As Long
On Error GoTo lerror
i = UBound(a)
IsBlankArray = False
Exit Function
lerror:
IsBlankArray = True
End Function
---------------------------------------
こんな関数を作ってしまえば・・・
    • good
    • 0

開発環境はVB6と仮定して


"SafeArrayAllocDescriptor"API関数を利用するとか・・・

この回答への補足

開発環境はVB6です。

>SafeArrayAllocDescriptor
ReDim Preserveすると、エラーになる?

http://yaplog.jp/orator/archive/43

理由がわかりませんでした。
平易に説明できる方いらっしゃいますか?

補足日時:2007/10/25 01:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!