VBScript: 配列が空(要素なし)かどうかを判定する自作関数
VBScriptで配列が空(要素なし)かどうかを判定したい場合、
特に専用の関数は用意されていません。
そこで配列の空判定を行う関数「CheckArrayElem」を作成しました。
戻り値はTrue(-1), False(0) の2通りで、 配列が空でない(要素がある)場合は「True」、 空の(要素がない)配列の場合は「False」を返します。
ロジックとしてはUbound 関数を実行したときに、 エラーが発生する場合は要素数なしとみなしています。
' /////////////////////////////////////////////////// ' 配列が空かどうかを判定する ' 戻り値: True(-1) 空でない(要素あり) ' False(0) 空(要素なし)、または配列ではない Function CheckArrayElem(arr) On Error Resume Next '配列かどうかを確認 If IsArray(arr) <> True Then CheckArrayElem = False Exit Function End If '要素数の最大値を取得 num = UBound(arr) If err.number <> 0 Then CheckArrayElem = False Else CheckArrayElem = True End If End Function
関数の使い方は次の通りです。
' 要素数3の配列 arrTemp = Array("a", "b", "c") re = CheckArrayElem(arrTemp) WScript.Echo re ' -1 ' 宣言のみの配列(空の配列) Dim arrTemp2() re = CheckArrayElem(arrTemp2) WScript.Echo re ' 0 ' 配列でない変数を指定 Dim a re = CheckArrayElem(a) WScript.Echo re ' 0
上のコードでは3通りの方法で関数を呼び出しています。
①要素のある配列の場合はTrue、 ②動的配列の宣言のみで空の配列の場合はFalse、 ③配列でない変数を指定した場合はFalseが戻っています。