2011年6月17日金曜日

配列のインデックス範囲を求める

「文字列関数 (5)」の項で既に触れてしまったが、配列のインデックス範囲
の下限値、上限値を求める為には、LBound 関数、UBound 関数をそれぞれ
用いる。各関数の書式は下記の通り :
  
   LBound(ArrayVarname [, Dimension])
   UBound(ArrayVarname [, Dimension])
  
ArrayVarname は対象となる配列変数。
Dimension には、インデックス範囲の下限値、上限値を求めたい次元を指定
する。例えば、ArrayVarname が 3 次元配列変数であった場合、第 2 次元目
のインデックス範囲を求めたい場合は、Dimension に 2 を指定する。省略時
は 1 次元とみなされる。
  
サンプルコードを以下に記す(わざわざ値を代入する必要はないのだが...) :
  
Sub ExampleIndexBounds()
       Dim arr1(3) As String
       Dim arr2(2, 3) As String
       '
       '変数 arr1 に値を代入する
       arr1(0) = "0"
       arr1(1) = "1"
       arr1(2) = "2"
       arr1(3) = "3"
       '
       '変数 arr2 に値を代入する
       arr2(0, 0) = "00"
       arr2(0, 1) = "01"
       arr2(0, 2) = "02"
       arr2(0, 3) = "03"
       arr2(1, 0) = "10"
       arr2(1, 1) = "11"
       arr2(1, 2) = "12"
       arr2(1, 3) = "13"
       arr2(2, 0) = "20"
       arr2(2, 1) = "21"
       arr2(2, 2) = "22"
       arr2(2, 3) = "23"
       '
       Msgbox("arr1のインデックス範囲は " & _
                      LBound(arr1) & "-" & UBound(arr1))
       Msgbox("arr2のインデックス範囲は " & _
                      LBound(arr2, 1) & "-" & UBound(arr2, 1) & " " & _
                      LBound(arr2, 2) & "-" & "UBound(arr2,2))
End Sub
  
実行の結果、
  
   「arr1のインデックス範囲は 0-3」
   「arr2のインデックス範囲は 0-2 0-3」
  
とメッセージが表示される。
ここで、インデックスは 0 から始まり、次元は 1 から始まることに注意する
こと(なんとなく、統一感がないが...)。

0 件のコメント:

コメントを投稿