【VBA】Error(errornumber) 関数でエラーメッセージを取得
概要
VBA(Visual Basic for Applications)では、ユーザー定義関数やプロシージャ内でエラーを意図的に返す必要が生じる場合があります。Error(errornumber)
関数は、指定したエラー番号に対応するエラー値(Variant
型、サブタイプ Error)を生成するための関数です。
このエラー値は、Excelのセルにエラーとして表示されたり、他の処理でエラー状態を伝播させるために利用されます。たとえば、ユーザー定義関数が計算不可能な値を検出した場合、Error(2007)
を返すことで「#DIV/0!」エラーを表現できます。
Error(errornumber) の基本的な使い方
Error(errornumber)
関数は、引数としてエラー番号(数値)を受け取り、その番号に対応するエラー値を返します。返された値は、通常の数値や文字列とは異なり、エラーであることを示す特殊な値となります。
VBAで作成したユーザー定義関数が、何らかの理由で正しい値を返せない場合、この関数を使ってエラー値を返すことが可能です。たとえば、入力値が不正な場合や、ゼロ除算が発生した場合などに使用します。
以下は Error(errornumber)
の基本的な使用例です:
' 例: 0で割ろうとした場合に #DIV/0! エラーを返す Function SafeDivision(numerator As Double, denominator As Double) As Variant If denominator = 0 Then SafeDivision = Error(2007) ' 2007 は #DIV/0! エラーに対応 Else SafeDivision = numerator / denominator End If End Function
このように、条件に応じてエラー値を返すことで、Excel上でエラー表示(例: #DIV/0!)がされるようになります。
エクセルでのエラー番号一覧
Error(errornumber)
で指定するエラー番号は、Excelの各種エラーに対応しています。よく使用されるエラー番号は以下のとおりです。
- 2000 : #NULL! エラー
- 2007 : #DIV/0! エラー
- 2015 : #VALUE! エラー
- 2023 : #REF! エラー
- 2029 : #NAME? エラー
- 2036 : #NUM! エラー
- 2042 : #N/A エラー
これらの番号は、Excelの内部でエラー状態を管理するためのものであり、Error()
関数に渡すことで、意図したエラー表示をセルに反映させることができます。
実際の使用例
以下に、Error(errornumber)
を利用した具体的な例をいくつか紹介します。
例 1: ゼロ除算エラーの処理
Function DivideValues(a As Double, b As Double) As Variant If b = 0 Then ' b が 0 の場合、#DIV/0! エラーを返す DivideValues = Error(2007) Else DivideValues = a / b End If End Function
この関数は、引数 b
がゼロの場合、Error(2007)
を返すことで Excel 上に #DIV/0! エラーが表示されます。
例 2: 不正な入力値に対するエラー処理
Function CalculateSquareRoot(x As Double) As Variant If x < 0 Then ' 負の数の場合、#NUM! エラーを返す CalculateSquareRoot = Error(2036) Else CalculateSquareRoot = Sqr(x) End If End Function
ここでは、負の数が入力された場合に Error(2036)
を返し、#NUM! エラーを Excel 上に表示するようにしています。
例 3: 入力値の検証
Function ValidateInput(value As Variant) As Variant ' 文字列が入力された場合、#VALUE! エラーを返す If Not IsNumeric(value) Then ValidateInput = Error(2015) Else ValidateInput = value * 2 End If End Function
この関数では、数値以外が入力された場合に Error(2015)
を返して、#VALUE! エラーを示します。
注意点とベストプラクティス
Error(errornumber)
関数を使用する際の注意点や推奨事項は以下の通りです:
- エラー番号の意味を把握する : 指定する数値がどのエラーに対応しているか、Excelのエラー番号一覧を参照して正しく設定しましょう。
-
通常のエラーハンドリングとの区別
: VBAには
On Error
ステートメントやErr
オブジェクトを用いたエラーハンドリング機能があります。Error(errornumber)
はあくまで関数の戻り値としてエラーを返すためのものであり、これらと混同しないように注意してください。 - ユーザー定義関数での利用 : ユーザー定義関数がセルから呼び出される場合、エラー値を返すとセル上に直接エラー表示(例: #DIV/0!)が行われ、ユーザーに問題を明示することができます。
- エラー値の伝播 : 一度エラー値が発生すると、その後の計算や処理においてエラーが伝播するため、必要に応じてエラー値のチェックを行い、適切な対応をするようにしましょう。
まとめ
VBAにおける Error(errornumber)
関数は、ユーザー定義関数やプロシージャで意図的にエラーを返すための便利な機能です。正しいエラー番号を指定することで、Excel上で標準のエラー表示(#DIV/0!、#NUM!、#VALUE! など)を実現でき、計算やデータ検証における異常値の扱いが容易になります。エラー番号の意味を理解し、他のエラーハンドリング手法と区別して使うことが、安定したVBAプログラム作成のポイントとなります。
この解説を参考に、実際のプロジェクトやユーザー定義関数の中で Error(errornumber)
の活用方法を検討してみてください。