概要

Visual Basic 6の関数は、特定の処理を行い値を返すプログラムの一部として機能する。

アクセス修飾子として、PrivatePublicを指定して、関数名の後に引数を定義する。
戻り値の型は、Asキーワードで指定する。

関数内では値を計算や処理を行い、最終的に関数名に値を代入することで戻り値を設定する。
データ型には数値型、文字列型、オブジェクト型等があり、目的に応じて適切な型を選択できる。

引数の受け渡し方法には値渡し (ByVal) と 参照渡し (ByRef) があり、デフォルトは参照渡しである。
必要に応じて、省略可能な引数や可変長引数も使用できる。

関数は他の関数やサブルーチンから呼び出すことができ、モジュール化されたコードの定義に役立つ。
また、エラーハンドリングのためにOn Errorステートメントを使用することもできる。


基本構文

 ' 関数
 [Private|Public] Function <関数名>([<引数> As <>, ...]) [As <戻り値の型>]
    ' 処理
    関数名 = 戻り値  '戻り値の設定
 End Function
 
 ' サブルーチン
 [Private|Public] Sub <サブルチン名>([<引数> As <>, ...])
    ' 処理
    ' ...略
 End Sub



Private / Public

Private

  • そのモジュール内でのみアクセス可能
  • 他のモジュールからは参照不可
  • コードの安全性とカプセル化を高める。


 ' このモジュール内でのみ使用可
 Private Sub InternalProcess()
    '処理
 End Sub


Public

  • どのモジュールからもアクセス可能
  • プロジェクト内のどこからでも参照可能
  • モジュール間で共有する必要がある変数やメソッドに使用する。


 ' 他モジュールから呼び出し可
 Public Function Calculate() As Integer
    '処理
 End Function



プロパティ

 Property Get <プロパティ名>() As <>
    ' 取得処理
    ' ...略
 End Property


 Property Let <プロパティ名>(<> As <>)
    ' 設定処理
 End Property



引数の修飾子

  • ByVal
    値渡し
  • ByRef
    参照渡し (デフォルト)
  • Optional
    省略可能な引数
  • ParamArray
    可変長引数



関数の定義例

基本的な関数

 Private Function Add(ByVal x As Integer, ByVal y As Integer) As Integer
    Add = x + y
 End Function
 
 ' 使用例
 Dim result As Integer
 result = Add(5, 3)  ' result = 8


参照渡しのサブルーチン

 Private Sub Swap(ByRef a As Integer, ByRef b As Integer)
    Dim temp As Integer
    temp = a
    a = b
    b = temp
 End Sub
 
 ' 使用例
 Dim x As Integer, y As Integer
 x = 1
 y = 2
 Swap x, y  ' x = 2, y = 1


オプション引数

 Private Function Multiply(ByVal x As Integer, Optional ByVal y As Integer = 1) As Integer
    Multiply = x * y
 End Function
 
 ' 使用例
 Dim result As Integer
 result = Multiply(5)     ' result = 5
 result = Multiply(5, 2)  ' result = 10


可変長引数

 Private Function Sum(ParamArray numbers() As Variant) As Long
    Dim total As Long
    Dim i As Integer
 
    For i = 0 To UBound(numbers)
       total = total + numbers(i)
    Next
 
    Sum = total
 End Function
 
 ' 使用例
 Dim result As Long
 result = Sum(1, 2, 3, 4, 5)  ' result = 15



プロパティ

プロパティとは

プロパティは内部データへのアクセスを制御して、値の検証やその他のロジックを追加することができる。

プロパティには、以下に示す3つの主要なアクセサがある。

  • Get
    値の読み取り
  • Let
    値の設定 (通常の値型)
  • Set
    オブジェクトの設定


 Private m_Name As String
 
 Property Get Name() As String
    Name = m_Name
 End Property
 
 Property Let Name(ByVal value As String)
    m_Name = value
 End Property
 
 ' 使用例
 Me.Name = "Test"     ' 設定
 Debug.Print Me.Name  ' 取得


データの検証

 Property Let Age(value As Integer)
    If value >= 0 And value <= 150 Then
       mAge = value
    Else
       Err.Raise 1000, "Invalid age value"
    End If
 End Property


計算値の提供

 Property Get TotalPrice() As Currency
    TotalPrice = mBasePrice * (1 + mTaxRate)
 End Property


カプセル化による安全性確保

 Private mPassword As String
 
 Property Let Password(value As String)
    mPassword = Encrypt(value)
 End Property


参照整合性の管理

 Private mParent As Form
 
 Property Set Parent(obj As Form)
    If Not obj Is Nothing Then
       Set mParent = obj
       ' その他の初期化処理
       ' ...略
    End If
 End Property