「Visual Basic 6の基礎 - 関数」の版間の差分
ナビゲーションに移動
検索に移動
(→基本構文) |
(→関数の定義例) |
||
140行目: | 140行目: | ||
result = Sum(1, 2, 3, 4, 5) ' result = 15 | result = Sum(1, 2, 3, 4, 5) ' result = 15 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | |||
== プロパティ == | |||
==== プロパティとは ==== | |||
プロパティは内部データへのアクセスを制御して、値の検証やその他のロジックを追加することができる。<br> | |||
<br> | |||
プロパティには、以下に示す3つの主要なアクセサがある。<br> | |||
* Get | |||
*: 値の読み取り | |||
* Let | |||
*: 値の設定 (通常の値型) | |||
* Set | |||
*: オブジェクトの設定 | |||
<br> | <br> | ||
<syntaxhighlight lang="vb"> | <syntaxhighlight lang="vb"> | ||
Private m_Name As String | Private m_Name As String | ||
156行目: | 168行目: | ||
Me.Name = "Test" ' 設定 | Me.Name = "Test" ' 設定 | ||
Debug.Print Me.Name ' 取得 | Debug.Print Me.Name ' 取得 | ||
</syntaxhighlight> | |||
<br> | |||
==== データの検証 ==== | |||
<syntaxhighlight lang="vb"> | |||
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 | |||
</syntaxhighlight> | |||
<br> | |||
==== 計算値の提供 ==== | |||
<syntaxhighlight lang="vb"> | |||
Property Get TotalPrice() As Currency | |||
TotalPrice = mBasePrice * (1 + mTaxRate) | |||
End Property | |||
</syntaxhighlight> | |||
<br> | |||
==== カプセル化による安全性確保 ==== | |||
<syntaxhighlight lang="vb"> | |||
Private mPassword As String | |||
Property Let Password(value As String) | |||
mPassword = Encrypt(value) | |||
End Property | |||
</syntaxhighlight> | |||
<br> | |||
==== 参照整合性の管理 ==== | |||
<syntaxhighlight lang="vb"> | |||
Private mParent As Form | |||
Property Set Parent(obj As Form) | |||
If Not obj Is Nothing Then | |||
Set mParent = obj | |||
' その他の初期化処理 | |||
' ...略 | |||
End If | |||
End Property | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> |
2025年1月23日 (木) 15:41時点における最新版
概要
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