Functionプロパティとは
Excel VBAで関数を作成する際に使用する、関数自体のプロパティを設定するための機能がFunctionプロパティです。
関数の動作や引数の型などを指定することができ、より正確で効率的な関数を作成するためには、適切なFunctionプロパティを設定することが重要です。
Functionプロパティの基本的な使い方
関数の定義の中でFunctionプロパティを設定することができます。Function定義は、Functionキーワードを使って以下のように記述します。
1 |
Function 関数名(引数1 As 型1, 引数2 As 型2, ...) As 戻り値の型 |
この定義の中で、関数名や引数の型、戻り値の型などを指定することができます。
また、Functionプロパティは定義の先頭に以下のように指定することができます。
1 |
Private/Public/Static/Function名の説明 |
ここで、「Private」と「Public」は、関数のアクセスレベルを指定するためのプロパティです。「Static」は、関数が呼び出されるたびに初期化されないことを指定するプロパティです。
「Function名の説明」は、関数の説明を指定するプロパティです。
Functionプロパティの代表的なもの
関数名
関数の名前を指定します。関数名は、英数字で指定する必要があります。
関数名を変更する場合は、呼び出し元のコードも変更する必要があるため、関数名を決める際には注意が必要です。
戻り値の型
関数が返す値の型を指定します。例えば、数値を返す関数であれば、戻り値の型を「Long」や「Double」などに設定します。
戻り値の型を指定することで、関数呼び出し元で返される値の型を事前に把握することができます。
引数の型と引数名
関数に渡す引数の型と引数名を指定します。
複数の引数を持つ場合は、カンマ区切りで指定します。
引数名は、英数字で指定する必要があります。引数の型を指定することで、関数内で引数を扱う際の型の制限を設けることができます。
パラメータ
関数が呼び出される際に渡すパラメータを指定することができます。
パラメータを指定することで、関数の引数の初期値を設定したり、可変長引数を定義することができます。
また、パラメータを使用することで、関数の柔軟性を高めることができます。
アクセスレベル
関数のアクセスレベルを指定することができます。
アクセスレベルには、「Public」、「Private」、「Friend」があります。Publicは、どこからでもアクセス可能な関数を定義する場合に指定します。
Privateは、同じモジュール内からのみアクセス可能な関数を定義する場合に指定します。Friendは、同じプロジェクト内からのみアクセス可能な関数を定義する場合に指定します。
Static
関数が呼び出されるたびに初期化されないようにする場合に指定します。
Staticを指定することで、関数内の変数を一度だけ初期化することができます。
Functionプロパティのまとめ
Functionプロパティを適切に設定することで、より正確で効率的な関数を作成することができます。
関数名、引数の型と引数名、戻り値の型、アクセスレベル、Staticなどを適切に設定し、パラメータを使用することで、関数の柔軟性を高めることができます。
また、Functionプロパティは関数定義の先頭に記述することができますので、関数定義の際に必ず設定するようにしましょう。
サンプルコード
以下のコードは、配列の要素を昇順に並び替えるための関数です。
Functionプロパティで配列の型を指定し、戻り値の型をVariant型に設定しています。また、パラメータで配列の要素数を指定することができるようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Function sortArray(arr() As Integer, ByVal arrLen As Integer) As Variant Dim i As Integer, j As Integer Dim temp As Integer For i = 0 To arrLen - 2 For j = i + 1 To arrLen - 1 If arr(i) > arr(j) Then temp = arr(i) arr(i) = arr(j) arr(j) = temp End If Next j Next i sortArray = arr End Function |
この関数を使う場合は、以下のように呼び出すことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Dim arr() As Integer Dim sortedArr As Variant Dim i As Integer ReDim arr(0 To 4) arr(0) = 5 arr(1) = 2 arr(2) = 9 arr(3) = 1 arr(4) = 3 sortedArr = sortArray(arr, UBound(arr) + 1) For i = 0 To UBound(sortedArr) Debug.Print sortedArr(i) Next i |
このコードを実行すると、以下のように配列の要素が昇順に並び替えられた結果が出力されます。
1 2 3 4 5 |
1 2 3 5 9 |
コメント