目次:
- 関数を直接実行できないため、別のプロシージャから関数を呼び出す必要があります。 CubeRoot関数を含む同じVBAモジュールに次の簡単なプロシージャを入力します。
- セルには12が表示されます。実際には1,688の立方根です。
ビデオ: Excel VBA入門 レッスン52 ワークブックを別名保存 2024
VBAプログラミングでは、関数が値を返します。関数プロシージャを実行し、Excel 2016で関数を呼び出すことができます。Subプロシージャとは異なり、関数は2つの方法でのみ実行できます。
-
別のSubプロシージャまたは関数プロシージャから関数を呼び出す
-
ワークシート式
この簡単な関数を試してみてください。 VBAモジュールに入力します。
<! CubeRoot(number)CubeRoot = number ^(1/3)End Functionこの関数は非常に賢明です。単に渡された数値の立方根を引数として計算します。ただし、機能を理解するための出発点となります。また、関数に関する重要な概念、つまり値を返す方法についても説明します。 (関数が値を返すことを覚えていますか?)
<! - 2 - >
このFunctionプロシージャを構成する1行のコードが計算を実行することに注意してください。数値計算(1/3の累乗)は、変数CubeRootに割り当てられます。偶然にも、CubeRootは関数の名前でもあります。関数に返す値を指定するには、その値を関数の名前に代入します。Subプロシージャから関数を呼び出す
関数を直接実行できないため、別のプロシージャから関数を呼び出す必要があります。 CubeRoot関数を含む同じVBAモジュールに次の簡単なプロシージャを入力します。
<! CallerSubプロシージャを実行すると、ExcelはAns変数の値を含むメッセージボックスを表示します。この値には5(9)
CubeRoot関数が実行され、引数125を受け取ります。計算は関数のコード(引数として渡された値を使用)を使用して実行され、関数の戻り値は変数です。 MsgBox関数は、Ans変数の値を表示します。CubeRoot関数に渡された引数を変更し、CallerSubマクロを再度実行してください。これは、あなたが関数に有効な引数(正の数)を与えたと仮定した場合と同じように機能します。
ところで、CallerSubの手順を少し簡略化することができます。 Ans変数は、後でその変数を使用するコードでない限り、実際には必要ありません。
MsgBox CubeRoot(125)
ワークシート式から関数を呼び出す
ワークシート式からこのVBA関数プロシージャを呼び出すときです。CubeRoot関数定義を保持する同じワークブック内のワークシートをアクティブにします。次に、任意のセルに次の数式を入力します。
= CubeRoot(1728)
セルには12が表示されます。実際には1,688の立方根です。
CubeRoot関数の引数として使用します。たとえば、セルA1に値が含まれている場合は、
= CubeRoot(A1)
と入力できます。この場合、関数はA1の値の立方根を計算して得られた数値を返します。
この機能は、ワークシートで何度でも使用できます。 Excelのビルトイン関数と同様に、カスタム関数は[関数の挿入]ダイアログボックスに表示されます。関数の挿入ツールバーボタンをクリックし、ユーザー定義のカテゴリを選択します。 [関数の挿入]ダイアログボックスには、独自の関数が一覧表示されます。 CubeRoot関数は、関数の挿入ダイアログボックスのユーザ定義カテゴリに表示されます。 関数の挿入ダイアログボックスで関数の説明を表示するには、次の手順を実行します。
開発者→コード→マクロを選択します。
Excelではマクロダイアログボックスが表示されますが、CubeRootはリストに表示されません。 (CubeRootはFunctionプロシージャですが、このリストにはSubプロシージャのみが表示されます)。マクロ名ボックスにCubeRootという単語を入力します。
-
[オプション]ボタンをクリックします。
[説明]ボックスに関数の説明を入力します。
-
[OK]をクリックして[マクロオプション]ダイアログボックスを閉じます。
-
[キャンセル]ボタンをクリックして、マクロダイアログボックスを閉じます。
-
この説明テキストが[関数の挿入]ダイアログボックスに表示されます。
-
ワークシートの式で使用されているCubeRoot関数を確認します。
-
数式でCubeRoot関数を使用する。