[PR]当サイトはアフィリエイト広告を利用しています。
はじめに
今回はVBA関数とワークシート関数の使い方を解説します。
VBA関数とはVBAにもともと用意されている関数で、自分で作らなくても最初から使える関数です。
ワークシート関数とはエクセルのシートに入力している関数がVBAでも使えるというものです。
エクセルにはたくさんの便利な関数が搭載されているので、それらを使えればプログラミングの手間が削減できます。
早速やっていきましょう。
今回の例題
下の図で高さ50メートルの灯台に登った。
角度調整できるカメラで地点Aが写る位置まで角度を調節したら、30度の位置になった。
灯台の入り口から地点Aまでの距離は何メートルとなるか。
手計算で解く場合
求める長さを\(x\)[m]とすると、次の式が成り立つ。
\[
50/x=\tan 30^\circ
\]
つまり
\[
x=50/\tan 30^\circ
\]
\[
\tan 30^\circ = 1/\sqrt{3}
\]
よってこれを代入すると
\[
x=50×\sqrt{3}≒86.6
\]
エクセル関数で解く場合
C3: =TAN(30*PI()/180)
D3: =50/C3
タンジェント(tan)を求める関数は
TAN()
となります。
引数、つまりかっこの中に入れる数値はラジアンで指定する必要があります。
角度をラジアンに変換するには次の式を使います。
角度×π/180
角度には30°の30が、πにはPI()が入ります。
エクセルではπはPI()関数で入力することができます。
VBAで求める場合
次のコードを入力します。
Sub distance()
Dim a As Double
a = Tan(30 * WorksheetFunction.Pi / 180)
Range("D4").Value = 50 / a
End Sub
タンジェントはVBA関数にTan()があるのでそれを使います。
しかしVBA関数にはPI()関数がありません。
ワークシートでは普通に呼び出せるのに、VBA関数には関数がない。
そういうときはワークシート関数をVBAで呼び出します。
PI()関数のワークシート関数は
WorksheetFunction.Pi
です。
たいていのワークシート関数は
WorksheetFunction.関数名
となりますが、単純にワークシートで使っていた関数名を直接入力しても微妙に違う場合があるので、使う前に対応表などで調べたほうがいいです。
関数名のあとにカッコと引数が必要だったりそうでなかったりもしますし、関数名の大文字小文字が違ったりもしますし。
まとめ
今回はVBA関数とワークシート関数で簡単な例題を解いてみました。
これらの関数をVBAで使えればプログラミングの手間が削減できるので便利です。