HOME > 即効テクニック > AccessVBA > コーディング・デバッグ > クラスの作成1(メソッド)

即効テクニック

コーディング・デバッグ

クラスの作成1(メソッド)

(Access 97)
●概要●
クラスモジュールでクラスを作成します。クラスに実装するのはメソッドとプロパティですが、ここではまずメソッドを作成してみます。クラスを作成するにはメニューバーの「挿入」→「クラスモジュール(C)」を選択します。クラス名を「Class1」としてそのクラスモジュールにプログラムを記述していきます。メソッドのみであれば通常の関数(Function)を作成するのとなんら変わりありませんが、通常、後述するプロパティを設定してきちんとしたクラスを作成していく場合には引数などの隠蔽を行います。ここでは配列を受け取り、その合計を求めるメソッドを作成します。

●サンプルコード●
クラスモジュールに以下のコードを記述します。
Public Function Sum(Arrangement() As Double, Number As Integer) As Double
  
  Dim counter As Integer
  Dim total As Variant
    For counter = 1 To Number
      total = total + Arrangement(counter)
      Debug.Print total
    Next counter
  Sum = total
  
End Function
●動作確認●
モジュールに以下のコードを記述して作成したクラスを呼び出します。ここでは「NorthWind.mdb」の「商品」テーブルの「単価」をレコードセットから配列に格納し、その配列とデータ数をクラスメソッド「Sum」に渡してその結果を表示させています。
Sub Class_Sample1()
  Dim cn As New ADODB.Connection
  Dim rst As ADODB.Recordset
  Dim cls As Class1
  Dim tanka(300) As Double
  Dim 合計 As Double
  Dim i As Integer
 
  Set cn = New ADODB.Connection
  cn.ConnectionString = _
    "Provider=microsoft.jet.oledb.4.0;" & _
    "Data Source=d:\NorthWind.mdb"
  cn.Open
 
  Set rst = New ADODB.Recordset
  rst.Source = "商品"
  rst.ActiveConnection = cn
  rst.CursorLocation = adUseClient
  rst.CursorType = adOpenDynamic
  rst.LockType = adLockOptimistic
  rst.Open

  With rst
    Do While Not .EOF
     i = i + 1
     tanka(i) = !単価
     .MoveNext
   Loop
  End With

  Set cls = New Class1
  合計 = cls.Sum(tanka(), rst.RecordCount)
  MsgBox 合計
 
  rst.Close
  cn.Close
  Set rst = Nothing
  Set cn = Nothing
  Set cls = Nothing
End Sub
(実行結果)
メッセージボックスに「73560」が表示されます。

●補足●
作成したクラスを使用するにはサンプルコードのようにクラスのオブジェクトを作成してから利用します。