目次Functionの特徴まずはFunctionの方から特徴をみてみましょう。戻り値を返せるマクロの登録ができないセルの関数として使える例で詳しくみてみましょう。以下のソースコードは、ボールを投げた時の軌道と速度を計算する関数です。x,y,vx,vyそれぞれをFunctionで計算します。FunctionFunctionの特徴1:戻り値を返すまず1つ目の特徴として、「戻り値を返す」があります。戻り値の型とFunctionを定義します。Doubleなどです。これは、関数名calcX、引数にv0,ang,tの3つが必要で、戻り値がDouble型だよ、と宣言しているのです。関数の中で戻り値を計算してあげます。xの部分で、calcXの関数の戻り値はxですよ、としています。することで、Functionの呼び出し元にxの計算結果が渡されます。Functionの特徴2:マクロの登録ができない2つ目のFunctionの特徴は、「マクロの登録ができない」です。いうことかというと、Excelのシートにボタンを設置して、そのボタンをクリックしたらVBAの処理が実行されるようにするのが定石だと思うのですが、Functionはボタンの処理に登録できません。↑のように、ボタンを設置して右クリックでマクロの登録をしようとすると、マクロの登録画面(Functionしかない場合、何も選べない)Functionしかない場合はマクロが何も選択できません。Functionは対象外なのです。ボタンから実行したい関数がある場合はSubで書かなければいけません。Functionの特徴3:セルの関数として使える3つ目のFunctionの特徴は、「セルの関数として使える」です。いうことかというと、Function関数をセルから呼び出す(「=c」と入力したら出てくる関数のサジェストにFunctionの関数が含まれている)この図のように、シートのセルに「=****」と数式を打ち込む際、Functionの関数名がサジェストで表示されます。(calcX,calcY,calcVX,calcVYが表示されている)つまり、自作のFunction関数がセルで使えるのです。Function関数をセルで使う様子よく計算する式なんかをFunctionで登録しておくと、便利!以上3つがFunctionの特徴です。戻り値を返さないマクロの登録ができるセルから呼び出せないとなります。Functionと逆だと思えばいいです。例として、先出のFunctionの例のボール軌道計算の関数をまとめて呼び出すSub関数をつくってみました。SubSubの特徴1:戻り値を返さないSub関数は戻り値を返せません。C言語とかでいうmain関数のような扱いです。戻り値を返そうとするとコンパイルエラーになります。Subの宣言で戻り値を付けてもコンパイルエラーになる↑試しにmainというSub関数を宣言して、戻り値を返すように書いてみましたが、コンパイルエラーがでました。Subの特徴2:マクロの登録ができるSub関数はボタンに登録できるマクロとして選択できます。Sub関数はマクロ登録できるボタンから呼び出すならSub関数、と覚えておきましょう。Subの特徴3:セルから呼び出せないSubは戻り値を返さないので当たり前なのですが、Functionのようにセルの数式として呼び出すことはできません。Subを呼び出すならボタンを設置してマクロ登録が必要、ということです。お願いします☆にほんブログ村ファミリーランキングこの記事を書いた人まゆみ理系夫婦の妻のほうです。大学、大学院(修士)で物理を専攻。2016年に長女を出産。フルタイム勤務ワーママ→休職中。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。SWELL.検索する。