Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6264 / 13644 ツリー ←次へ | 前へ→

【46216】未定義配列の判定方法 yama 07/1/26(金) 18:01 質問[未読]
【46217】Re:未定義配列の判定方法 Blue 07/1/26(金) 18:05 回答[未読]
【46310】Re:未定義配列の判定方法 yama 07/1/30(火) 12:12 お礼[未読]

【46216】未定義配列の判定方法
質問  yama  - 07/1/26(金) 18:01 -

引用なし
パスワード
   動的配列がReDimされていないことを判定するにはどうすればよいのでしょうか?

試したこと
Public dt() As Long

Sub test()
  Erase dt
  Debug.Print IsEmpty(dt), IsNull(dt) ', UBound(dt)
  ReDim dt(2)
  Debug.Print IsEmpty(dt), IsNull(dt), UBound(dt)
End Sub

【46217】Re:未定義配列の判定方法
回答  Blue  - 07/1/26(金) 18:05 -

引用なし
パスワード
   こちらが参考になるでしょうか。
http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=37781&no=0&P=v61k3
※先頭4文字は半角にしてください。

【46310】Re:未定義配列の判定方法
お礼  yama  - 07/1/30(火) 12:12 -

引用なし
パスワード
   ▼Blue さん:
>こちらが参考になるでしょうか。
>http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=37781&no=0&P=v61k3
>※先頭4文字は半角にしてください。

ありがとうございます。
GetMem4でばっちりです!

バリアント型で変数を宣言して、それをReDimで配列にしたかをIsArrayで判定するという方法もあるんですね。
ただEraseを使用しても配列には変わりないので、今回の場合この方法はちょっと都合が悪いです。
Sub test()
 Dim ary As Variant

 If IsArray(ary) Then MsgBox "test1"
 ReDim ary(1)
 If IsArray(ary) Then MsgBox "test2"
 Erase ary
 If IsArray(ary) Then MsgBox "test3"
End Sub

6264 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free