>>19
たとえばUBound2とかいう名前で、空だったら-1を返す、そうでなければ
UBoundの値を返すといった関数を作って、渡した人にはUBound2を使ってもらうとか。

あるいは空に戻すときに、ReDim ar(-1 to -1) as longのようにするとか。
実際には空の配列ではないけれど、 UBound(ar) < 0 のような形で判定できる。