VBA-アレイ

変数が値を格納するためのコンテナーであることはよく知っています。開発者は、一度に1つの変数に複数の値を保持できる場合があります。一連の値が単一の変数に格納されている場合、それはarray variable

配列宣言

配列は、配列変数の宣言が括弧を使用することを除いて、変数が宣言されたのと同じ方法で宣言されます。次の例では、配列のサイズが括弧内に示されています。

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • 配列サイズは5と示されていますが、配列インデックスはZEROから始まるため、6つの値を保持できます。

  • 配列インデックスを負にすることはできません。

  • VBScript配列は、任意のタイプの変数を配列に格納できます。したがって、配列は整数、文字列、または文字を単一の配列変数に格納できます。

配列への値の割り当て

値は、割り当てられる値のそれぞれに対して配列インデックス値を指定することによって配列に割り当てられます。文字列にすることができます。

ボタンを追加し、以下の機能を追加します。

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		     'Number
   arr(3) = 2.45 		     'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

上記の関数を実行すると、次の出力が生成されます。

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

多次元配列

配列は単一の次元に限定されるだけでなく、最大60の次元を持つことができます。2次元配列は、最も一般的に使用される配列です。

次の例では、多次元配列が3行4列で宣言されています。

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

上記の関数を実行すると、次の出力が生成されます。

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

ReDimステートメント

ReDimステートメントは、動的配列変数を宣言し、ストレージスペースを割り当てまたは再割り当てするために使用されます。

構文

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

パラメータの説明

  • Preserve −最後の次元のサイズを変更するときに、既存の配列のデータを保持するために使用されるオプションのパラメーター。

  • Varname −変数の名前を示す必須パラメーター。これは、標準の変数命名規則に従う必要があります。

  • Subscripts −配列のサイズを示す必須パラメーター。

次の例では、配列が再定義されており、配列の既存のサイズが変更されたときに値が保持されています。

Note −元の配列よりも小さい配列のサイズを変更すると、削除された要素のデータは失われます。

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

上記の関数を実行すると、次の出力が生成されます。

XYZ
41.25
22
3
4
5
6
7

配列メソッド

VBScriptには、開発者が配列を効果的に処理するのに役立つさまざまな組み込み関数があります。配列と組み合わせて使用​​されるすべてのメソッドを以下に示します。詳細については、メソッド名をクリックしてください。

シニア番号 機能と説明
1 LBound

指定された配列の最小の添え字に対応する整数を返す関数。

2 UBound

指定された配列の最大の添え字に対応する整数を返す関数。

3 スプリット

指定された数の値を含む配列を返す関数。区切り文字に基づいて分割します。

4 参加する

配列内の指定された数の部分文字列を含む文字列を返す関数。これは、分割メソッドの正反対の関数です。

5 フィルタ

特定のフィルター基準に基づいて文字列配列のサブセットを含むゼロベースの配列を返す関数。

6 IsArray

入力変数が配列であるかどうかを示すブール値を返す関数。

7 消去

配列変数に割り当てられたメモリを回復する関数。