VBA関数とプロシージャの6つの相違点

前のチュートリアルでは、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つの相違点を要約します。 関数とサブプロシージャのさまざまな特性に応じて、コードで両方を活用すれば、開発効率が向上し、コードの整理にも役立ちます。

相違点を勉強した後、この章にある残りの部分では、関数とサブプロシージャの類似する所を説明し、それらの使用方法を深く理解します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です