前のチュートリアルでは、VBAプロシージャやVBA関数の基礎を勉強しました。両方の基本的な使用方法はチュートリアルで説明されており、VBAプロシージャと関数には相似なところは多いです。それに、記事では、関数とプロシージャの大きい相違点は、VBA関数が値を返すことができることであると指摘しています。
次のチュートリアルでは、関数とサブプロシージャの6つの相違点について詳しく説明します。これらの6つの相違点を理解すると、両方の関係を明確になります。実際の開発過程では、関数とサブプロシージャを組み合わせて使用することにもマスターできます。
目次
宣言ステートメントが違う
関数の宣言ステートメントはFunctionとEnd Functionであり、プロシージャの宣言ステートメントはSubとEnd Subです。
次のコードは関数の宣言コードです。
Function MyFunc()
End Function
次のコードはサブプロシージャの宣言コードです。
Sub SayHello()
End Sub
関数は値を返すことができる
関数とサブプロシージャの大きい相違点は、関数が指定された値を返すことができることです。関数を呼び出すときは、変数を使用して、関数の返す値を格納します。この値は、後続のコードで使用できます。
ここで強調したいのは、関数が値を返さなくてもいいということです。効果はサブプロシージャと同じです。そのため、返す値が不要な場合は、関数ではなくサブプロシージャを直接使用することをお勧めします。
関数では返す値のデータ型を指定する必要がある
VBA変数、データ型、および演算子の章で説明したように、VBAには多くのデータ型があり、データ型を正確に使用すると、プログラムをより効率的に実行することができます。
同様に、関数の宣言も返す値のデータ型を指定する必要があります。構文は変数の宣言に似ており、データ型は関数名の後に指定されます。
Function MyFunc() As String '返す値のデータ型を指定し、この関数は文字列型の値を返す。
End Function
関数のコードでは、返す値は関数自体に割り当てられる
関数は、メインコードの返す値を関数自体に割り当てることにより、値を返します。
Function MyFunc() As String
'この関数はHello Worldを返す
MyFunc = "Hello World"
End Function
関数を呼び出すときは、関数の返す値のデータ型と同じデータ型の変数を使用して、返す値を取得します
メインプログラムで関数を呼び出して値を取得するときは、関数の返す値のデータ型と同じデータ型の変数を使用する必要があります。そうしないと、プログラムはエラーが発生するかもしれません。
Sub MyCode()
Dim text As String '関数の返す値と同じデータ型の変数を宣言する
text = MyFunc '関数を呼び出して、返す値を取得する
Range("A1") = text '関数の返す値を使用する
End Sub
'この関数は、上記のプロシージャに呼び出される
Function MyFunc() As String
'この関数はHelloWorldを返す
MyFunc = "Hello World"
End Function
関数はセル内の数式に使用できる
Excelにある関数と同様に、ユーザーが作成した関数は数式に直接使用でき、使用方法は内蔵の関数と同じです。
カスタム関数はネストすることもできます。
まとめ
関数とプロシージャの大きい相違点は、関数が値を返すことができることです。これに基づいて、このチュートリアルでは、関数とサブプロシージャの6つの相違点を要約します。 関数とサブプロシージャのさまざまな特性に応じて、コードで両方を活用すれば、開発効率が向上し、コードの整理にも役立ちます。
相違点を勉強した後、この章にある残りの部分では、関数とサブプロシージャの類似する所を説明し、それらの使用方法を深く理解します。
コメントを残す