TOP

VBA-レッスン 6.2。データ型 (Variables)

前のレッスンでは、特定のデータを書き込むことができる変数について説明しましたが、複数の値を含めることはできません。この制限を回避するために、VBA には複数の値を格納できる配列があります。


さまざまな配列の例をいくつか示します。

Sub variables()
    '変数の宣言例
    Dim var1 As String
    
    '1次元配列の宣言例
    Dim array1(4) As String
    
    '2次元配列の宣言例
    Dim array2(4, 3) As String
    
    '3次元配列の宣言例
    Dim array3(4, 3, 2) As String
End Sub

1次元配列

Dim array1(4) As String

1 次元配列は、1 つの列で構成されるテーブルと考えることができます。配列 array1(4) は、5 つのレコードを保持できる 1 次元配列です。なぜ 5 なのか?配列内のレコードの数はゼロ (0、1、2、3、4) から始まるためです。

次に、2 次元配列を考えてみましょう。

Dim array2(4, 3) As String

すでに 5 行 4 列のテーブルのように見えます。

'色付きのセルに値を割り当てる array2(0, 0) = "赤いセルの値" array2(4, 1) = "緑色のセルの値" array2(2, 3) = "青いセルの値"

定数

変数と同様に、定数は値を保存するために使用できますが、違いは値を変更できないことです。値の繰り返しを避けるために定数を追加できます (例: 13.14)。

Sub const_example()
    Cells(1, 1) = Cells(1, 2) * 13.14
    Cells(2, 1) = Cells(2, 2) * 13.14
    Cells(3, 1) = Cells(3, 2) * 13.14
    Cells(4, 1) = Cells(4, 2) * 13.14
    Cells(5, 1) = Cells(5, 2) * 13.14
End Sub

これにより、コードの理解と編集が容易になります。また、定数の値を非常に簡単に変更することもできます。

Sub const_example()
   '定数の宣言 + 値の代入
    Const ANNUAL_RATE As Double = 13.14
   
    Cells(1, 1) = Cells(1, 2) * ANNUAL_RATE
    Cells(2, 1) = Cells(2, 2) * ANNUAL_RATE
    Cells(3, 1) = Cells(3, 2) * ANNUAL_RATE
    Cells(4, 1) = Cells(4, 2) * ANNUAL_RATE
    Cells(5, 1) = Cells(5, 2) * ANNUAL_RATE
End Sub

変数の範囲

変数がプロシージャ (Sub) の先頭で宣言されている場合、その変数はこのプロシージャ内でのみ使用できます。プロシージャが実行されると、変数の値は使用できなくなります。

Sub procedure1()
   Dim var1 As Integer
   '=> 変数はこのプロシージャ内でのみ有効です
End Sub

Sub procedure2()
   '=> var1 はここでは使用できません
End Sub

モジュール プロシージャで変数を使用するには、モジュールの最初で変数を宣言するだけです。このように変数を宣言すると、ワークブックが閉じるまで使用できます。

Dim var1 As Integer

Sub procedure1()
   '=> var1 はここで使用できます
End Sub

Sub procedure2()
   '=> var1 はここでも使用できます
End Sub

この本のすべてのモジュールで同じ変数を使用する場合は、前の例の Dim を Global に置き換えるだけです。

Global var1 As Integer

変数が表示されるプロシージャを実行した後に変数を使用するには、Dim を Static に置き換えます。

Sub procedure1()
    Static var1 As Integer
End Sub

プロシージャ内のすべての変数の値を使用するには、Sub の前に Static を追加します。

Static Sub procedure1()
    Dim var1 As Integer
End Sub

独自の変数タイプの作成

独自のタイプを作成する方法の簡単な例を次に示します。

 '変数タイプの作成
 Type customers
    last_name As String
    first_name As String
 End Type
   
 Sub variables()
    '変数の宣言
    Dim cust1 As customers
   
    'cust1 に値を代入する
    cust1.last_name = "Smith"
    cust1.first_name = "John"
   
    '使用例
    MsgBox cust1.last_name & " " & cust1.first_name
 End Sub