TOP

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

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


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

  1. Sub variables()  
  2.     '変数の宣言例  
  3.     Dim var1 As String  
  4.       
  5.     '1次元配列の宣言例  
  6.     Dim array1(4) As String  
  7.       
  8.     '2次元配列の宣言例  
  9.     Dim array2(4, 3) As String  
  10.       
  11.     '3次元配列の宣言例  
  12.     Dim array3(4, 3, 2) As String  
  13. End Sub  

1次元配列

  1. Dim array1(4) As String  

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

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

  1. Dim array2(4, 3) As String  

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

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

定数

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

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

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

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

変数の範囲

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

  1. Sub procedure1()  
  2.    Dim var1 As Integer  
  3.    '=> 変数はこのプロシージャ内でのみ有効です  
  4. End Sub  
  5.   
  6. Sub procedure2()  
  7.    '=> var1 はここでは使用できません  
  8. End Sub  

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

  1. Dim var1 As Integer  
  2.   
  3. Sub procedure1()  
  4.    '=> var1 はここで使用できます  
  5. End Sub  
  6.   
  7. Sub procedure2()  
  8.    '=> var1 はここでも使用できます  
  9. End Sub  

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

  1. Global var1 As Integer  

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

  1. Sub procedure1()  
  2.     Static var1 As Integer  
  3. End Sub  

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

  1. Static Sub procedure1()  
  2.     Dim var1 As Integer  
  3. End Sub  

独自の変数タイプの作成

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

  1. '変数タイプの作成  
  2. Type customers  
  3.    last_name As String  
  4.    first_name As String  
  5. End Type  
  6.     
  7. Sub variables()  
  8.    '変数の宣言  
  9.    Dim cust1 As customers  
  10.     
  11.    'cust1 に値を代入する  
  12.    cust1.last_name = "Smith"  
  13.    cust1.first_name = "John"  
  14.     
  15.    '使用例  
  16.    MsgBox cust1.last_name & " " & cust1.first_name  
  17. End Sub