Vba 表: 基本から上級までのガイド
キーポイント
- VBA テーブル内のテーブルは、データ (例: 生徒の名前、科目、得点) を保存および整理するためのミニ データベースと考えてください。
- これを使用する前に、配列を宣言する必要があります。データ型とそこに保存したい値の数を指定します。
VBA を使用してビッグ データを操作する場合は、テーブルと、VBA コードでのテーブルの使用方法を理解する必要があります。このガイドでは、テーブルのあらゆる側面を探索し、使用する例もいくつか紹介します。彼ら。
VBAのテーブルとは何ですか?
VBA では、配列は複数の値を格納できる変数です。この配列内のすべての値に一度にアクセスすることも、配列内のその値の位置であるインデックス番号を指定して 1 つの値にアクセスすることもできます。生徒の名前、科目、成績を指定する約束があると想像してください。
1 人の生徒だけでなく、数百人の生徒の情報をすべてテーブルに保存できます。テーブルを説明するための簡単な例を次に示します。
上の例では、10 個の要素 (配列サイズ) からなる配列があり、各要素には特定の位置 (インデックス) があります。
したがって、8 番目の位置にある要素を使用したい場合は、そのインデックス番号を使用してその要素を参照する必要があります。
上の例で使用した配列は 1 次元配列です。ただし、このガイドの後半では、多次元配列についても学習します。
VBAで配列を宣言する方法
上で述べたように、配列は変数の型であるため、キーワード (Dim、Private、Public、および Static) を使用して宣言する必要があります。通常の変数とは異なり、配列を宣言するときは、配列名の後に 1 組のかっこを使用する必要があります。
上の例で使用した配列を宣言したいとします。
配列を宣言する手順。
- まず、キーワード「Dim」を使用し、テーブル名を入力し、かっこを入力します。
- 次に、配列のデータ型を指定する必要があります。データ型が指定されていない場合は、VBA によって適切なデータ型が割り当てられます。
- その後、配列に格納する要素の数を定義する必要があります。
- 最終的に、配列内の要素に値を割り当てるには、要素のインデックス番号を使用して要素を識別し、値を割り当てる必要があります。
完全なコード
Sub vba_array_example() Dim StudentsNames(10) As String StudentsNames(0) = "Waylon" StudentsNames(1) = "Morton" StudentsNames(2) = "Rudolph" StudentsNames(3) = "Georgene" StudentsNames(4) = "Billi" StudentsNames(5) = "Enid" StudentsNames(6) = "Genevieve" StudentsNames(7) = "Judi" StudentsNames(8) = "Madaline" StudentsNames(9) = "Elton" End Sub
簡単なメモ
- 上記のコードでは、最初に、最大 10 個の要素を格納でき、文字列データ型を持つ 1 次元配列を定義する Dim ステートメントがあります。
- その後、0 から 9 までの配列の要素を定義する 10 行のコードが完成します。
さまざまなデータ型を持つテーブル
配列を宣言するときにデータ型を指定しないと、VBA はさまざまなデータ型を自動的に使用するため、メモリ使用量がわずかに増加します。このメモリ使用量の増加により、コードのパフォーマンスが低下する可能性があります。
したがって、バリアント データ型を使用する必要がない限り、配列を宣言するときに特定のデータ型を定義することが最善です。
配列から情報を返す
配列から情報を取得する際に前述したように、要素のインデックス番号を使用してその位置を指定できます。たとえば、前の例で作成した領域の 8 番目の要素を返したい場合、コードは次のようになります。
上記のコードでは、配列要素 8 を使用してセル A1 に値を入力しました。
オプションベース1を使用
あなたは今、なぜ項目リストを 1 からではなく 0 から始めたのかという疑問を抱いていると思います。
まあ、それは間違いではありません。
プログラミング言語が最初に構築されたとき、何らかの不注意により、この構造は配列内の要素のリストになってしまいました。ほとんどのプログラミング言語では、リスト項目の同じ構造が見られます。
ただし、他のほとんどのコンピューター言語とは異なり、VBA ではインデックスの動作を正規化できます。つまり、インデックスを 1 から開始できるようにすることができます。必要なのは、モジュールを宣言する前に、モジュールの先頭にオプションに基づいたステートメントを追加することだけです。配列.配列。
このテーブルは次のようになります。
表内で検索する
値を配列に格納する場合、配列の検索が必要になる場合があります。
この場合、使用できる方法を知っておく必要があります。次に、配列内の値を検索する方法を理解するのに役立つ以下のコードを見てください。
Sub vba_array_search() 'this section declares an array and variables _ that you need to search within the array. Dim myArray(10) As Integer Dim i As Integer Dim varUserNumber As Variant Dim strMsg As String 'This part of the code adds 10 random numbers to _ the array and shows the result in the _ immediate window as well. For i = 1 To 10 myArray(i) = Int(Rnd * 10) Debug.Print myArray(i) Next i 'it is an input box that asks you the number that you want to find. Loopback: varUserNumber = InputBox _ ("Enter a number between 1 and 10 to search for:", _ "Linear Search Demonstrator") 'it's an IF statement that checks for the value that you _ have entered in the input box. If varUserNumber = "" Then End If Not IsNumeric(varUserNumber) Then GoTo Loopback If varUserNumber < 1 Or varUserNumber > 10 Then GoTo Loopback 'message to show if the value doesn't found. strMsg = "Your value, " & varUserNumber & _ ", was not found in the array." 'loop through the array and match each value with the _ the value you have entered in the input box. For i = 1 To UBound(myArray) If myArray(i) = varUserNumber Then strMsg = "Your value, " & varUserNumber & _ ", was found at position " & i & " in the array." Exit For End If Next i 'message box in the end MsgBox strMsg, vbOKOnly + vbInformation, "Linear Search Result" End Sub
- コードの最初の部分には、コードの後半で使用する必要がある変数があります。
- その後、次の部分は、RND を使用して乱数を生成し、配列の 10 個の値を取得します。
- 次に、テーブル内で検索する値を入力する入力ボックスです。
- この部分には、入力した値が見つからない場合にメッセージ ボックスで使用する文字列のコードが含まれています。
- コードのこの部分では、ループを使用して配列の各要素をループし、入力した値が配列内にあるかどうかを確認します。
- コードの最後の部分では、値が見つかったかどうかを示すメッセージが表示されます。