概要
Visual Basic 6の関数は、特定の処理を行い値を返すプログラムの一部として機能する。
アクセス修飾子として、Private
やPublic
を指定して、関数名の後に引数を定義する。
戻り値の型は、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