Excel関数とVBA関数の違い
Excel関数(ワークシート関数)とVBA関数の違いは、どのアプリケーションで扱えるか、の違いです。
Excel関数はExcelではセルの数式でしか書けません。ただ、ほとんどのExcel関数はVBAから利用することが出来ます。
VBA関数はVBAのプログラムの中でしか書けません。Excelからは利用できません。
Excel関数とVBA関数は全く別物です。同じ名前の関数がいくつかありますが、名前が同じだけで中身は異なります。
これで話は全てなのですが、「関数」という言葉自体がなじみが薄いため分かりにくいところですので、そのあたりが分かるように説明していきます。
関数とは?
プログラミング経験が少ない方にとって「関数」は頭を使うポイントの一つです。
ここでは主にVBA関数とExcel関数の違いを説明していますが、先に「関数とは?」について説明します。
関数(かんすう)とは、渡されたデータや内部データを使って答えを導き出すものです。「渡されたデータ」のことを「引数(ひきすう)」と言います。ここでは渡されたデータや内部データがどういうものなのかは気にしなくていいです。
関数は他から呼び出されてから動き出します。自分で勝手に動き出すことはありません。
普段の生活でも関数で表現できるものがたくさんあります。例えばコーヒーメーカーも関数として表現できます。コーヒー豆が引数で、結果がコーヒーです。このときコーヒーメーカーを使っている人はコーヒー豆からどうやってコーヒーを作るのか知らなくてもコーヒー(結果)を受け取ることが出来ます。
コーヒーメーカーを使うたびにコーヒーが出てきます。1回使えば1杯、2回使えば2杯でてきます。関数も同じで、使う度(呼び出す度)に1回動作します。
Excel関数の書き方であればこんな感じになります。
=コーヒーメーカー(コーヒー豆)
また、コーヒーメーカーにコーヒー豆を入れたのにコーヒーが出てこなかった、ということもあります。このように期待した結果が得られない場合や正しい動作をしないことをバグと言います。「コーヒーメーカー関数がバグってる」のような言い方をします。
引数を渡さない関数もあります。例えばお掃除ロボットなどがそれにあたります。スタートボタンを押す(関数を呼び出す)とあとは勝手に掃除を始めて終わったら勝手に元の位置に戻ります。このとき、引数はありませんが内部データとしてどこを掃除したかとか、開始してからどのぐらい経過したか、などを内部で利用します。
また、引数が複数ある関数もあります。例えば鍋がそれにあたります。必要な材料を全て入れて、火に掛けて、何分待って、などの複数の引数を渡さないと正しく料理が仕上がりません。このように、関数を使う側に使い方のルールを守る必要が発生することもあります。
Excel関数(ワークシート関数)とは
Excel関数(ワークシート関数)は、Excelのセルに書く関数のことを指します。
Excelの数式タブの「fx(関数の挿入)」ボタンを押すと、関数の挿入ダイアログが表示され、そこから使う関数を選ぶことが出来ます。
また、関数の挿入ダイアログを使わなくてもセルに「=SUM」のようにイコールから書き始めることでも出来ます。
Excel関数はExcelをインストールしていれば利用できます。SUM関数やVLOOKUP関数などもそうです。そのため、Excel関数はExcelを構成する仕組みの1つとも言えます。
Excel関数はVBAから利用することが可能です。いくつかの方法があります。
詳細については「VBAからExcelのワークシート関数を使う」をご参照ください。
VBA関数とは
VBA関数とは、プログラミング言語であるVBA(Visual Basic for Applicationsの略)のプログラミングコードの中でのみ扱うことが出来る関数です。Excelからは利用できません。
Excelを起動して、Alt + F11キーを押すとVBAの画面が表示されます。または、Excelの開発タブのVisual Basicからでも開きます。
開発タブが表示されていない場合は、Excelのファイルメニュー→オプション→リボンのユーザー設定→開発、にチェックを付けると表示されます。
VBA関数の1つであるInt関数を使っています。Int関数は引数で渡された数値の整数を返す関数です。
1 2 3 4 5 |
Sub SubTest() Dim i As Integer i = Int(1.23) '// Int関数は整数部分を返す関数。1.23の整数の1が返り、iに1がセットされる End Sub |