概要
この記事には、いくつかの種類の配列を操作するために使用できる Microsoft Visual Basic for Applications プロシージャのサンプルが含まれています。
詳細情報
Microsoft では、明示または黙示を問わず、保証なしで、図のみのプログラミング例を提供しています。 これには、特定の目的に対する商品性または適合性に関する黙示の保証が含まれますが、これに限定されません。 この記事では、デモンストレーションされているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについて理解していることを前提としています。 Microsoft サポート エンジニアは、特定のプロシージャの機能を説明するのに役立ちますが、これらの例を変更して、特定の要件を満たすために追加の機能を提供したり、プロシージャを構築したりすることはできません。 注: Visual Basic for Applicationsプロシージャでは、アポストロフィ (') の後の単語はコメントです。
配列を塗りつぶし、ワークシートにコピーするには
-
新しいブックを開き、Visual Basic モジュール シートを挿入します。
-
モジュール シートに次のコードを入力します。
Sub Sheet_Fill_Array() Dim myarray As Variant myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) Range("a1:a10").Value = Application.Transpose(myarray) End Sub
-
[Sheet1] をクリックします。
-
[ツール] メニューの [マクロ] をポイントし、[マクロ] をクリックします。
-
[マクロ] ダイアログ ボックスで、[Sheet_Fill_Array] をクリックし、[実行] をクリックします。
ワークシートから値を取得し、配列を塗りつぶすには
-
セル A1:A10 に Sheet1 の値を入力します。
-
Visual Basic モジュール シートで、次のコードを入力します。
Sub from_sheet_make_array() Dim thisarray As Variant thisarray = Range("a1:a10").Value counter = 1 'looping structure to look at array While counter <= UBound(thisarray) MsgBox thisarray(counter, 1) counter = counter + 1 Wend End Sub
-
[Sheet1] をクリックします。
-
[ツール] メニューの [マクロ] をポイントし、[マクロ] をクリックします。
-
[マクロ] ダイアログ ボックスで、[ from_sheet_make_array] をクリックし、[実行] をクリックします。
配列を渡して受け取る
-
モジュール シートで、次のコードを入力します。
Sub pass_array() Dim thisarray As Variant thisarray = Selection.Value receive_array (thisarray) End Sub Sub receive_array(thisarray) counter = 1 While counter <= UBound(thisarray) MsgBox thisarray(counter, 1) counter = counter + 1 Wend End Sub
-
[シート 1] を選択し、範囲 A1:A10 を強調表示します。
-
[ツール] メニューの [マクロ] をポイントし、[マクロ] をクリックします。
-
[マクロ] ダイアログ ボックスで、[pass_array] をクリックし、[実行] をクリックします。
2 つの配列を比較するには
-
Sheet1 に 2 つの名前付き範囲を作成します。 1 つの range1 ともう 1 つの range2 という名前を付けます。
たとえば、セル範囲 A1:A10 を強調表示し、range1 という名前を付けます。セル範囲 B1:B10 を強調表示し、range2 という名前を付けます。 -
モジュール シートに次のコードを入力します。
Sub compare_two_array() Dim thisarray As Variant Dim thatarray As Variant thisarray = Range("range1").Value thatarray = Range("range2").Value counter = 1 While counter <= UBound(thisarray) x = thisarray(counter, 1) y = thatarray(counter, 1) If x = y Then MsgBox "yes" Else MsgBox "no" End If counter = counter + 1 Wend End Sub
-
[シート 2] を選択します。
-
[ツール] メニューの [マクロ] をポイントし、[マクロ] をクリックします。
-
[マクロ] ダイアログ ボックスで、[ compare_two_array] をクリックし、[実行] をクリックします。
比較ごとに 1 つのメッセージ ボックスが表示されます。
動的配列を塗りつぶすには
-
モジュール シートで、次のコードを入力します。
Sub fill_array() Dim thisarray As Variant number_of_elements = 3 'number of elements in the array 'must redim below to set size ReDim thisarray(1 To number_of_elements) As Integer 'resizes this size of the array counter = 1 fillmeup = 7 For counter = 1 To number_of_elements thisarray(counter) = fillmeup Next counter counter = 1 'this loop shows what was filled in While counter <= UBound(thisarray) MsgBox thisarray(counter) counter = counter + 1 Wend End Sub
-
[ツール] メニューの [マクロ] をポイントし、[マクロ] をクリックします。
-
[マクロ] ダイアログ ボックスで、[fill_array] をクリックし、[実行] をクリックします。
注: 変数 "number_of_elements" を変更すると、配列のサイズが決まります。