「excel vba match 戻り値」
といった検索キーワードでのアクセスが時折あります。
WorksheetFunctionオブジェクトのMatchメソッドの戻り値について調べていた方による検索です。
WorksheetFunction.Matchの戻り値はDouble型と定義されている
WorksheetFunction.Matchメソッドの戻り値は、オブジェクトブラウザーの詳細ペインに、
「Function Match(Arg1, Arg2, [Arg3]) As Double」
と表示されているとおり、Double型(倍精度浮動小数点型)です。
コードウィンドウで「Match」にカーソルがある状態でショートカットキー[Ctrl]+[I]を押して表示されるヒントでも、
「As Double」を確認できます。
WorksheetFunction.Matchの戻り値をローカルウィンドウで確認する
WorksheetFunction.Matchメソッドの戻り値を、拙著『いちばんやさしいExcel VBAの教本』でも多用しているローカルウィンドウで確認してみましょう。
下図のような例で確認してみます。
ショートカットキー[F8]でステップ実行して、
ret = WorksheetFunction.Match("ハ", Range("A1:A3"), 0)
が、実行されるとVariantで宣言した変数retが、Doubleになります。
Double型のデータを返すと定義されているのに、該当するデータが存在しない場合、
「WorksheetFunctionクラスのMatchプロパティを取得できません。」
という実行時エラーが発生してしまうわけです。
Match関数は整数値を返す
WorksheetFunction.Matchメソッドの戻り値がDoubleであることは確認できましたが、そもそもワークシート関数のMATCHが、何を返すのかを考えてみることも必要です。
MATCH関数は、セル範囲から指定した項目を検索して、範囲内での項目の相対的な位置(整数)を返す関数です。
ですからMATCH関数をVBAから利用するWorksheetFunction.Matchメソッドも、「As Long」とLong型で宣言しても、問題ありません。
WorksheetFunctionオブジェクトの数値を返すメソッドはDoubleを返す
ちなみに、WorksheetFunctionオブジェクトに用意されている、数値を返すタイプのメソッドは、多くの場合Double型の値を返すように定義されています。
例えば、曜日を表す整数を返すWorksheetFunction.Weekdayメソッドも「As Double」と定義されています。
最終更新日時:2019-02-05 16:17
Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » WorksheetFunction.Matchの戻り値は?