サーチ…


VBAで配列を宣言する

配列の宣言は、変数の宣言と非常によく似ていますが、名前の直後に配列の次元を宣言する必要がある点が異なります。

Dim myArray(9) As String 'Declaring an array that will contain up to 10 strings

既定では、VBA内の配列はゼロからインデックスされているため、かっこ内の数値は配列のサイズを参照するのではなく、最後の要素のインデックスを参照します

要素へのアクセス

配列の要素にアクセスするには、Arrayの名前を使用し、括弧の中にある要素のインデックスを続けます。

myArray(0) = "first element"
myArray(5) = "sixth element"
myArray(9) = "last element"

配列の索引付け

配列のインデックス付けを変更するには、この行をモジュールの先頭に配置します。

Option Base 1

この行では、モジュールで宣言されているすべての配列が1つのインデックスに登録されます

特定のインデックス

Toキーワードと下限/上限(=インデックス)を使用して、独自のインデックスを持つ各配列を宣言することもできます。

Dim mySecondArray(1 To 12) As String 'Array of 12 strings indexed from 1 to 12
Dim myThirdArray(13 To 24) As String 'Array of 12 strings indexed from 13 to 24

動的宣言

宣言の前にArrayのサイズがわからない場合は、動的宣言とReDimキーワードを使用できます。

Dim myDynamicArray() As Strings 'Creates an Array of an unknown number of strings
ReDim myDynamicArray(5) 'This resets the array to 6 elements

ReDimキーワードを使用すると、配列の以前の内容が消去されます。これを防ぐには、 ReDim後にPreserveキーワードを使用しReDim

Dim myDynamicArray(5) As String
myDynamicArray(0) = "Something I want to keep"

ReDim Preserve myDynamicArray(8) 'Expand the size to up to 9 strings
Debug.Print myDynamicArray(0) ' still prints the element

Splitを使用して文字列から配列を作成する

分割機能

指定した数の部分文字列を含むゼロベースの1次元配列を返します。

構文

分割(式 [、 デリミタ [、 制限 [、 比較 ]]]

説明
表現 必須。部分文字列と区切り文字を含む文字列式。 expressionが長さゼロの文字列( ""またはvbNullString)の場合、 Splitは要素もデータも含まない空の配列を返します。この場合、返される配列は0のLBoundと-1のUBoundを持ちます。
デリミタ オプション。部分文字列の制限を識別するために使用される文字列文字。省略すると、スペース文字( "")が区切り文字とみなされます。 区切り文字が長さゼロの文字列の場合、 文字列全体を含む単一要素の配列が返されます。
限定 オプション。返される部分文字列の数。 -1は、すべての部分文字列が返されることを示します。
比較する オプション。部分文字列を評価するときに使用する比較の種類を示す数値。値については、設定セクションを参照してください。

設定

compare引数には、次の値を指定できます。

定数 説明
説明 -1 Option Compare文の設定を使用して比較を実行します。
vbBinaryCompare 0 バイナリ比較を実行します。
vbTextCompare 1 テキスト比較を実行します。
vbDatabaseCompare 2 Microsoft Accessのみ。データベース内の情報に基づいて比較を実行します。

この例では、Splitがいくつかのスタイルを表示することによってどのように動作するかを示しています。コメントには、実行された異なるスプリットオプションのそれぞれについての結果セットが表示されます。最後に、返された文字列配列をループする方法を示します。

Sub Test
    
    Dim textArray() as String

    textArray = Split("Tech on the Net")
    'Result: {"Tech", "on", "the", "Net"}

    textArray = Split("172.23.56.4", ".")
    'Result: {"172", "23", "56", "4"}

    textArray = Split("A;B;C;D", ";")
    'Result: {"A", "B", "C", "D"}

    textArray = Split("A;B;C;D", ";", 1)
    'Result: {"A;B;C;D"}

    textArray = Split("A;B;C;D", ";", 2)
    'Result: {"A", "B;C;D"}

    textArray = Split("A;B;C;D", ";", 3)
    'Result: {"A", "B", "C;D"}

    textArray = Split("A;B;C;D", ";", 4)
    'Result: {"A", "B", "C", "D"}

    'You can iterate over the created array
    Dim counter As Long

    For counter = LBound(textArray) To UBound(textArray)
        Debug.Print textArray(counter)
    Next
 End Sub

配列の要素を反復する

For ...次へ

イテレータ変数をインデックス番号として使用することは、配列の要素を反復する最も速い方法です。

Dim items As Variant
items = Array(0, 1, 2, 3)

Dim index As Integer
For index = LBound(items) To UBound(items)
    'assumes value can be implicitly converted to a String:
    Debug.Print items(index) 
Next

ネストされたループを使用して、多次元配列を反復することができます。

Dim items(0 To 1, 0 To 1) As Integer
items(0, 0) = 0
items(0, 1) = 1
items(1, 0) = 2
items(1, 1) = 3

Dim outer As Integer
Dim inner As Integer
For outer = LBound(items, 1) To UBound(items, 1)
    For inner = LBound(items, 2) To UBound(items, 2)
        'assumes value can be implicitly converted to a String:
        Debug.Print items(outer, inner)
    Next
Next

それぞれのために...次へ

For Each...Nextループは、パフォーマンスが重要でない場合でも、配列の反復に使用できます。

Dim items As Variant
items = Array(0, 1, 2, 3)

Dim item As Variant 'must be variant
For Each item In items
    'assumes value can be implicitly converted to a String:
    Debug.Print item
Next

For Eachループは、すべての次元を外側から内側に反復します(要素がメモリに配置されるのと同じ順序)ので、ネストされたループは必要ありません。

Dim items(0 To 1, 0 To 1) As Integer
items(0, 0) = 0
items(1, 0) = 1
items(0, 1) = 2
items(1, 1) = 3

Dim item As Variant 'must be Variant
For Each item In items
    'assumes value can be implicitly converted to a String:
    Debug.Print item
Next

パフォーマンスが重要な場合、 For EachループはCollectionオブジェクトを反復するのに最適です。


上の4つのスニペットはすべて同じ出力を生成します:

 0
 1
 2
 3

動的配列(配列のサイズ変更と動的処理)

ダイナミックアレイ

配列の変数を動的に追加したり減らしたりすることは、扱う情報に設定された数の変数がない場合に大きな利点となります。

値を動的に追加する

ReDimステートメントで配列のサイズを変更するだけで、配列のサイズは変更されますが、配列に既に格納されている情報を保持する場合は、 Preserveという部分が必要になりPreserve

以下の例では、配列内の値を保持しながら、配列を作成し、各繰り返しで変数を1つ増やします。

Dim Dynamic_array As Variant
' first we set Dynamic_array as variant

For n = 1 To 100

    If IsEmpty(Dynamic_array) Then
        'isempty() will check if we need to add the first value to the array or subsequent ones
    
        ReDim Dynamic_array(0)
        'ReDim Dynamic_array(0) will resize the array to one variable only
        Dynamic_array(0) = n

    Else
        ReDim Preserve Dynamic_array(0 To UBound(Dynamic_array) + 1)
        'in the line above we resize the array from variable 0 to the UBound() = last variable, plus one effectivelly increeasing the size of the array by one
        Dynamic_array(UBound(Dynamic_array)) = n
        'attribute a value to the last variable of Dynamic_array
    End If

Next

値を動的に削除する

同じ論理を利用して配列を減らすことができます。この例では、値「last」が配列から削除されます。

Dim Dynamic_array As Variant
Dynamic_array = Array("first", "middle", "last")
    
ReDim Preserve Dynamic_array(0 To UBound(Dynamic_array) - 1)
' Resize Preserve while dropping the last value

配列のリセットと動的再利用

作成した配列をメモリ上に再利用することもできるので、実行時間が遅くなります。これは、さまざまなサイズの配列に便利です。配列を再利用するために使用できるスニペットは、配列をReDim (0)戻し、1つの変数を配列に帰属させ、配列を再び自由に増加させることです。

下のスニペットでは、値1〜40の配列を作成し、配列を空にして、値40〜100で配列を補充します。すべてこれが動的に行われます。

Dim Dynamic_array As Variant

For n = 1 To 100

    If IsEmpty(Dynamic_array) Then
        ReDim Dynamic_array(0)
        Dynamic_array(0) = n
    
    ElseIf Dynamic_array(0) = "" Then
        'if first variant is empty ( = "") then give it the value of n
        Dynamic_array(0) = n
    Else
        ReDim Preserve Dynamic_array(0 To UBound(Dynamic_array) + 1)
        Dynamic_array(UBound(Dynamic_array)) = n
    End If
    If n = 40 Then
        ReDim Dynamic_array(0)
        'Resizing the array back to one variable without Preserving,
        'leaving the first value of the array empty
    End If

Next

ジグザグ配列(配列の配列)

ジグザグ配列は多次元配列ではありません

配列の配列(ジグザグ配列)は多次元配列と同じではありません。多次元配列は次元(配列内)の要素数が定義された行列(長方形)のように見えますが、配列は年ごと別の月の日のように、要素の数が異なる内部配列を持つカレンダー。

ジグザグ配列は、ネストされたレベルのために使用するのが面倒で扱いにくいですが、型の安全性はあまりありませんが、非常に柔軟性があるため、さまざまな種類のデータを簡単に操作できます。空の要素。

ギザギザの配列を作成する

以下の例では、名前の配列とNumbersの配列の2つの配列を含むぎざぎざの配列を初期化し、それぞれの要素にアクセスします

Dim OuterArray() As Variant
Dim Names() As Variant
Dim Numbers() As Variant
'arrays are declared variant so we can access attribute any data type to its elements

Names = Array("Person1", "Person2", "Person3")
Numbers = Array("001", "002", "003")

OuterArray = Array(Names, Numbers)
'Directly giving OuterArray an array containing both Names and Numbers arrays inside

Debug.Print OuterArray(0)(1)
Debug.Print OuterArray(1)(1)
'accessing elements inside the jagged by giving the coordenades of the element

ジグザグ配列の動的作成と読み込み

私たちは、配列を構築するのにもっとダイナミックになることができます。顧客データシートがExcelにあると想像して、顧客の詳細を出力する配列を作成したいと考えています。

   Name -   Phone   -  Email  - Customer Number 
Person1 - 153486231 - 1@STACK - 001
Person2 - 153486242 - 2@STACK - 002
Person3 - 153486253 - 3@STACK - 003
Person4 - 153486264 - 4@STACK - 004
Person5 - 153486275 - 5@STACK - 005

Header配列とCustomers配列を動的に構築し、ヘッダーに列タイトルを格納し、Customers配列には配列として各顧客/行の情報を格納します。

Dim Headers As Variant
' headers array with the top section of the customer data sheet
    For c = 1 To 4
        If IsEmpty(Headers) Then
            ReDim Headers(0)
            Headers(0) = Cells(1, c).Value
        Else
            ReDim Preserve Headers(0 To UBound(Headers) + 1)
            Headers(UBound(Headers)) = Cells(1, c).Value
        End If
    Next
    
Dim Customers As Variant
'Customers array will contain arrays of customer values
Dim Customer_Values As Variant
'Customer_Values will be an array of the customer in its elements (Name-Phone-Email-CustNum)
    
    For r = 2 To 6
    'iterate through the customers/rows
        For c = 1 To 4
        'iterate through the values/columns
            
            'build array containing customer values
            If IsEmpty(Customer_Values) Then
                ReDim Customer_Values(0)
                Customer_Values(0) = Cells(r, c).Value
            ElseIf Customer_Values(0) = "" Then
                Customer_Values(0) = Cells(r, c).Value
            Else
                ReDim Preserve Customer_Values(0 To UBound(Customer_Values) + 1)
                Customer_Values(UBound(Customer_Values)) = Cells(r, c).Value
            End If
        Next
        
        'add customer_values array to Customers Array
        If IsEmpty(Customers) Then
            ReDim Customers(0)
            Customers(0) = Customer_Values
        Else
            ReDim Preserve Customers(0 To UBound(Customers) + 1)
            Customers(UBound(Customers)) = Customer_Values
        End If
        
        'reset Custumer_Values to rebuild a new array if needed
        ReDim Customer_Values(0)
    Next

    Dim Main_Array(0 To 1) As Variant
    'main array will contain both the Headers and Customers
    
    Main_Array(0) = Headers
    Main_Array(1) = Customers

To better understand the way to Dynamically construct a one dimensional array please check Dynamic Arrays (Array Resizing and Dynamic Handling) on the Arrays documentation.

上記のスニペットの結果は、4要素、2インデントレベルを持つ配列の2つの配列を持つジャグド配列で、もう1つはそれぞれ4要素と3インデントレベルの5配列を含む別のジャグド配列です。

Main_Array(0) - Headers - Array("Name","Phone","Email","Customer Number")
          (1) - Customers(0) - Array("Person1",153486231,"1@STACK",001)
                Customers(1) - Array("Person2",153486242,"2@STACK",002)
                ...
                Customers(4) - Array("Person5",153486275,"5@STACK",005)

あなたは心の中であなたが作成ジャグ配列の構造を負担する必要があります情報にアクセスするには、上記の例では、あなたはそれを見ることができるMain Arrayの配列が含まれHeadersとアレイ(配列のCustomersさまざまな方法でそれゆえ)要素にアクセスする。

ここで、 Main Array情報を読み、各顧客情報をInfo Type: Infoとして印刷します。

For n = 0 To UBound(Main_Array(1))
    'n to iterate from fisrt to last array in Main_Array(1)
    
    For j = 0 To UBound(Main_Array(1)(n))
        'j will iterate from first to last element in each array of Main_Array(1)
        
        Debug.Print Main_Array(0)(j) & ": " & Main_Array(1)(n)(j)
        'print Main_Array(0)(j) which is the header and Main_Array(0)(n)(j) which is the element in the customer array
        'we can call the header with j as the header array has the same structure as the customer array
    Next
Next

あなたのJagged Arrayの構造を把握するために、上記の例では、 Main_Array -> Customers -> CustomerNumber -> Nameという3つのレベルにアクセスして、必要な"Person4"を返しますMain_Array(Customers)(CustomerNumber)(Name) Main_Array(1)(3)(0)あるMain_Array(1)(3)(0)は、Main_ArrayのCustomersの位置、次にCustomer Jagged配列のCustomer 4の位置、 Main_Array(Customers)(CustomerNumber)(Name)

多次元配列

多次元配列

名前が示すように、多次元配列は、複数の次元(通常は2つまたは3つ)を含む配列ですが、最大32の次元を持つことができます。

マルチ配列は、さまざまなレベルの行列のように機能し、1つ、2つ、3つの次元を比較します。

One Dimensionは典型的な配列であり、要素のリストのように見えます。

Dim 1D(3) as Variant

*1D - Visually*
(0)
(1)
(2)

2次元は数独グリッドやExcelシートのように見えます。配列を初期化するときに、配列の行数と列数を定義します。

Dim 2D(3,3) as Variant
'this would result in a 3x3 grid 

*2D - Visually*
(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
(2,0) (2,1) (2,2)

三次元はルービックのキューブのように見えるでしょう。配列を初期化するときには、行と列、および配列/層数を定義します。

Dim 3D(3,3,2) as Variant
'this would result in a 3x3x3 grid

*3D - Visually*
       1st layer                 2nd layer                  3rd layer
         front                     middle                     back
(0,0,0) (0,0,1) (0,0,2) ¦ (1,0,0) (1,0,1) (1,0,2) ¦ (2,0,0) (2,0,1) (2,0,2)
(0,1,0) (0,1,1) (0,1,2) ¦ (1,1,0) (1,1,1) (1,1,2) ¦ (2,1,0) (2,1,1) (2,1,2)
(0,2,0) (0,2,1) (0,2,2) ¦ (1,2,0) (1,2,1) (1,2,2) ¦ (2,2,0) (2,2,1) (2,2,2)

さらなる次元は3Dの乗算と考えることができるので、4D(1,3,3,3)は2つの並列の3Dアレイとなる。


2次元配列

作成

以下の例は、従業員のリストを集めたもので、各従業員はリスト(姓、姓、住所、電子メール、電話など)に関する一連の情報を持ちます。例は本質的に配列に格納されます従業員、情報)は、(0,0)が最初の従業員の名です。

Dim Bosses As Variant
'set bosses as Variant, so we can input any data type we want

Bosses = [{"Jonh","Snow","President";"Ygritte","Wild","Vice-President"}]
'initialise a 2D array directly by filling it with information, the redult wil be a array(1,2) size 2x3 = 6 elements

Dim Employees As Variant
'initialize your Employees array as variant
'initialize and ReDim the Employee array so it is a dynamic array instead of a static one, hence treated differently by the VBA Compiler
ReDim Employees(100, 5)
'declaring an 2D array that can store 100 employees with 6 elements of information each, but starts empty
'the array size is 101 x 6 and contains 606 elements

For employee = 0 To UBound(Employees, 1)
'for each employee/row in the array, UBound for 2D arrays, which will get the last element on the array
'needs two parameters 1st the array you which to check and 2nd the dimension, in this case 1 = employee and 2 = information
    For information_e = 0 To UBound(Employees, 2)
    'for each information element/column in the array
        
        Employees(employee, information_e) = InformationNeeded ' InformationNeeded would be the data to fill the array
        'iterating the full array will allow for direct attribution of information into the element coordinates
    Next
Next

サイズ変更

サイズ変更またはReDim Preserveは、1次元配列のノルムのように、エラーが発生する代わりに、元のサイズと同じサイズと追加する行数または列数を加えた情報を一時配列に転送する必要があります。下の例では、一時配列を初期化し、元の配列から情報を転送し、残りの空の要素を埋め、一時配列を元の配列に置き換える方法を見ていきます。

Dim TempEmp As Variant
'initialise your temp array as variant
ReDim TempEmp(UBound(Employees, 1) + 1, UBound(Employees, 2))
'ReDim/Resize Temp array as a 2D array with size UBound(Employees)+1 = (last element in Employees 1st dimension) + 1,
'the 2nd dimension remains the same as the original array. we effectively add 1 row in the Employee array

'transfer
For emp = LBound(Employees, 1) To UBound(Employees, 1)
    For info = LBound(Employees, 2) To UBound(Employees, 2)
        'to transfer Employees into TempEmp we iterate both arrays and fill TempEmp with the corresponding element value in Employees
        TempEmp(emp, info) = Employees(emp, info)
    
    Next
Next

'fill remaining
'after the transfers the Temp array still has unused elements at the end, being that it was increased
'to fill the remaining elements iterate from the last "row" with values to the last row in the array
'in this case the last row in Temp will be the size of the Employees array rows + 1, as the last row of Employees array is already filled in the TempArray

For emp = UBound(Employees, 1) + 1 To UBound(TempEmp, 1)
    For info = LBound(TempEmp, 2) To UBound(TempEmp, 2)
        
        TempEmp(emp, info) = InformationNeeded & "NewRow"
    
    Next
Next

'erase Employees, attribute Temp array to Employees and erase Temp array
Erase Employees
Employees = TempEmp
Erase TempEmp

要素値の変更

特定の要素の値を変更/変更するには、変更する座標を呼び出して新しい値を与えるだけですEmployees(0, 0) = "NewValue"

あるいは、座標を使用して条件を繰り返し、必要なパラメータに対応する値を一致させることができます。

For emp = 0 To UBound(Employees)
    If Employees(emp, 0) = "Gloria" And Employees(emp, 1) = "Stephan" Then
    'if value found
        Employees(emp, 1) = "Married, Last Name Change"
        Exit For
        'don't iterate through a full array unless necessary
    End If
Next

読書

配列内の要素にアクセスするには、ネストループ(すべての要素を繰り返します)、ループと座標(行を繰り返し、列に直接アクセスする)、または両方の座標で直接アクセスすることができます。

'nested loop, will iterate through all elements
For emp = LBound(Employees, 1) To UBound(Employees, 1)
    For info = LBound(Employees, 2) To UBound(Employees, 2)
        Debug.Print Employees(emp, info)
    Next
Next

'loop and coordinate, iteration through all rows and in each row accessing all columns directly
For emp = LBound(Employees, 1) To UBound(Employees, 1)
    Debug.Print Employees(emp, 0)
    Debug.Print Employees(emp, 1)
    Debug.Print Employees(emp, 2)
    Debug.Print Employees(emp, 3)
    Debug.Print Employees(emp, 4)
    Debug.Print Employees(emp, 5)
Next

'directly accessing element with coordinates
Debug.Print Employees(5, 5)

多次元配列を使用する場合、配列マップを保持することは常に便利であることを覚えておいてください 。混乱することがあります。


3次元配列

3Dアレイでは、2D配列と同じ前提を使用します。従業員と情報を格納するだけでなく、ビルディングを組み込むだけでなく、

3D配列には、従業員(行と考えることができる)、情報(列)、および建物があり、Excel文書では異なるシートと考えることができ、サイズは同じですが、各シートにはそのセル/要素内の異なる情報セット。 3Dアレイには、 n個の2Dアレイが含まれます。

作成

3D配列は3つの座標を初期化する必要がありますDim 3Darray(2,5,5) As Variant 、配列の最初の座標はBuilding / Sheets(行と列の異なるセット)の数になり、2番目の座標は行と3を定義します列。上記のDimは108要素( 3*6*6 )の3D配列をもたらし、効果的に3つの異なる2D配列のセットを持ちます。

Dim ThreeDArray As Variant
'initialise your ThreeDArray array as variant
ReDim ThreeDArray(1, 50, 5)
'declaring an 3D array that can store two sets of 51 employees with 6 elements of information each, but starts empty
'the array size is 2 x 51 x 6 and contains 612 elements

For building = 0 To UBound(ThreeDArray, 1)
    'for each building/set in the array
    For employee = 0 To UBound(ThreeDArray, 2)
    'for each employee/row in the array
        For information_e = 0 To UBound(ThreeDArray, 3)
        'for each information element/column in the array
            
            ThreeDArray(building, employee, information_e) = InformationNeeded ' InformationNeeded would be the data to fill the array
        'iterating the full array will allow for direct attribution of information into the element coordinates
        Next
    Next
Next

サイズ変更

3D配列のサイズ変更は、2Dのサイズ変更と似ていますが、元のサイズと同じサイズのテンポラリ配列を最初に作成し、パラメータの座標に1を増やすと、最初の座標は配列のセット数を増やします。 3番目の座標は、各セットの行または列の数を増やします。

以下の例では、各セットの行数を1つずつ増やし、最近追加された要素に新しい情報を埋め込みます。

Dim TempEmp As Variant
'initialise your temp array as variant
ReDim TempEmp(UBound(ThreeDArray, 1), UBound(ThreeDArray, 2) + 1, UBound(ThreeDArray, 3))
'ReDim/Resize Temp array as a 3D array with size UBound(ThreeDArray)+1 = (last element in Employees 2nd dimension) + 1,
'the other dimension remains the same as the original array. we effectively add 1 row in the for each set of the 3D array

'transfer
For building = LBound(ThreeDArray, 1) To UBound(ThreeDArray, 1)
    For emp = LBound(ThreeDArray, 2) To UBound(ThreeDArray, 2)
        For info = LBound(ThreeDArray, 3) To UBound(ThreeDArray, 3)
            'to transfer ThreeDArray into TempEmp by iterating all sets in the 3D array and fill TempEmp with the corresponding element value in each set of each row
            TempEmp(building, emp, info) = ThreeDArray(building, emp, info)
        
        Next
    Next
Next

'fill remaining
'to fill the remaining elements we need to iterate from the last "row" with values to the last row in the array in each set, remember that the first empty element is the original array Ubound() plus 1
For building = LBound(TempEmp, 1) To UBound(TempEmp, 1)
    For emp = UBound(ThreeDArray, 2) + 1 To UBound(TempEmp, 2)
        For info = LBound(TempEmp, 3) To UBound(TempEmp, 3)
            
            TempEmp(building, emp, info) = InformationNeeded & "NewRow"
        
        Next
    Next
Next

'erase Employees, attribute Temp array to Employees and erase Temp array
Erase ThreeDArray
ThreeDArray = TempEmp
Erase TempEmp

要素の値と読みを変更する

3D配列の要素を読み込んで変更することは、2D配列のやり方と同様に行うことができます。ループと座標の余分なレベルを調整するだけです。

Do
' using Do ... While for early exit
    For building = 0 To UBound(ThreeDArray, 1)
        For emp = 0 To UBound(ThreeDArray, 2)
            If ThreeDArray(building, emp, 0) = "Gloria" And ThreeDArray(building, emp, 1) = "Stephan" Then
            'if value found
                ThreeDArray(building, emp, 1) = "Married, Last Name Change"
                Exit Do
                'don't iterate through all the array unless necessary
            End If
        Next
    Next
Loop While False

'nested loop, will iterate through all elements
For building = LBound(ThreeDArray, 1) To UBound(ThreeDArray, 1)
    For emp = LBound(ThreeDArray, 2) To UBound(ThreeDArray, 2)
        For info = LBound(ThreeDArray, 3) To UBound(ThreeDArray, 3)
            Debug.Print ThreeDArray(building, emp, info)
        Next
    Next
Next

'loop and coordinate, will iterate through all set of rows and ask for the row plus the value we choose for the columns
For building = LBound(ThreeDArray, 1) To UBound(ThreeDArray, 1)
    For emp = LBound(ThreeDArray, 2) To UBound(ThreeDArray, 2)
        Debug.Print ThreeDArray(building, emp, 0)
        Debug.Print ThreeDArray(building, emp, 1)
        Debug.Print ThreeDArray(building, emp, 2)
        Debug.Print ThreeDArray(building, emp, 3)
        Debug.Print ThreeDArray(building, emp, 4)
        Debug.Print ThreeDArray(building, emp, 5)
    Next
Next

'directly accessing element with coordinates
Debug.Print Employees(0, 5, 5)


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow