2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« VBAの配列に不定数の要素を追加するには?(その4) | トップページ | VBA関数を呼び出すだけの構文は? »

2008年5月22日 (木)

VBScriptやVBAの配列が初期化されているか? 配列の次元数は?

VBScriptやVBAでは、以下のようにLBound()のエラーを拾う。のが普通のやり方みたいです。

Function NumberOfDimensions(a)
NumberOfDimensions = -1
On Error Resume Next
Do
  NumberOfDimensions = NumberOfDimensions + 1
  If LBound(a, NumberOfDimensions + 1) Then:
Loop Until Err
End Function

ここで、次元数=0が、「配列が初期化されてない。」の意味です。

ところで、JScriptには、そういうメソッドがあります!えっ?

Function NumberOfDimensions(a)
Dim sc As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
sc.AddCode "function NumberOfDimensions(a){return new VBArray(a).dimensions();}"
NumberOfDimensions = sc.CodeObject.NumberOfDimensions(a)
End Function

« VBAの配列に不定数の要素を追加するには?(その4) | トップページ | VBA関数を呼び出すだけの構文は? »