エクセルのVBA関数とワークシート上の関数の違い

Excelを使い始めた人が関数やマクロなどを使用しようとしたときに感じる疑問として「VBAとワークシート上の関数は何故違うんだろう?」と思う方が多いと思います。

結果的にはワークシートの関数とVBAの関数は全くの別物と思ってください。
以下にVBAとワークシートの関数の違いを少しご紹介します。

○同じ意味の関数で、スペルが違う関数
【今日の日付取得】
VBA関数   :「Date」
ワークシート関数:「Today」

【日付の間隔を取得】
VBA関数   :「Datediff」
ワークシート関数:「DATEDIF」

○スペルが同じで、違う動作をする関数
【Round】
VBA関数   :丸め処理
ワークシート関数:四捨五入

など他にも色々あります。
同じ動作をする関数というのはたまたま同じように名前がつけられただけです。同じ名称で同じ動作という関数はめったにないと思った方がいいと思います。

Excel5.0からマクロでVBAを記述するようになりましたが、それより前のバージョンのではマクロにワークシート関数に書いているように記述していました。VBAというのはVB(Microsoft Visual Basic)というプログラム言語を元にして作成された言語となっています。

Officeでは、WordやAccessにもマクロがあり、それぞれWordBasic、AccessBasicというように全く機能がバラバラのものが採用されていました。それを統一しようとして作られた言語がVBA(Visual Basic for Applications)ということなのです。

と言う経緯があることから、Excel独自の関数とoffice全体のVBA関数とは違うということが分かりますよね。



Posted by KurokiLine