[VBA] 三角関数(Sin, Cos, Tan)

VBA で三角関数 (sin, cos, tan) を計算する

 Sin(数値) は数値の正弦を返します。
 Cos(数値) は数値の余弦を返します。
 Tan(数値) は数値の正接を返します。

 戻り値は Double 型(倍精度浮動小数点数型)です。

 Sin関数を使って $\sin(\pi/6)$ の値を求めてみましょう。
 引数はラディアンで指定するので、
 
\[\pi=3.14159265\]
ぐらいの精度で円周率を定義しておきます。

'[VBA] sin30°を計算-1

Sub Sin_30_1()
  Dim pi As Double, x As Double
  pi = 3.14159265
  Debug.Print Sin(p / 6)
End Sub

 しかし実際にこれを実行すると「 0.49999 ... 」という数字となって、真値「 0.5 」に比べて少しだけ誤差があります。そこで、ワークシート関数PI() を呼び出すコードに変えてみましょう。

'[VBA] sin30°を計算-2

Sub Sin_30_2()
  Dim pi As Double, x As Double
  pi = WorksheetFunction.Pi()
  Debug.Print Sin(p / 6)
End Sub

 Sin_30_2() を実行すると「 0.5 」という値を得ることができます。
 
 場合によっては、ラディアンではなく、引数を度数 deg (degree の略。すなわち "°")で入れたいこともあると思います。deg と rad の間には
 
\[180\,\mathrm{[deg]}=\pi\,\mathrm{[rad]}\]
の関係があるので、

\[x\,\mathrm{[deg]}=\frac{\pi x}{180\,\mathrm{[rad]}}\]
によって単位を変換できます。以下には引数を deg で指定する三角関数を載せておきます。いずれもファンクションマクロ(ユーザー定義関数)ですから、コードをそのまま標準モジュールに貼りつけるだけで、普通のワークシート関数と同じように使用することができます。

'[VBA] 引数を度数単位で受け取る余弦関数

Function DCOS(x As Double) As Double
  Dim pi As Double
  pi = WorksheetFunction.Pi()
  DCOS = Cos(x * p / 180)
End Function

 

'[VBA] 引数を度数単位で受け取る正弦関数

Function DSIN(x As Double) As Double
  Dim pi As Double
  pi = WorksheetFunction.Pi()
  DSIN = Sin(x * p / 180)
End Function

 

'[VBA] 引数を度数単位で受け取る正接関数

Function DTAN(x As Double) As Double
  Dim pi As Double
  pi = WorksheetFunction.Pi()
  DTAN = Tan(x * p / 180)
End Function

 
 ワークシート上で deg 単位で

=DCOS(数値)
=DSIN(数値)
=DTAN(数値)

と入力すると、それぞれ正弦、余弦、正接の値を返してくれます。


 

コメントをどうぞ

メールアドレスが公開されることはありません。