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

 Sin(数値) は数値の正弦を返します。
 Cos(数値) は数値の余弦を返します。
 Tan(数値) は数値の正接を返します。
 戻り値は Double 型(倍精度浮動小数点数型)です。
 三角関数を使ったコードを作ってみましょう。
 

円周率を定義します

 数値は普通の実数ですから、三角関数でいえばラディアン [rad] で指定することになります。ですから、例えば sinπ/6 という値が欲しいとき、

p = 3.14159265

ぐらいの精度で円周率を定義して、次のようなコードによって値を得ることはできます。

 Sub 正弦()
  Dim p As Double, x As Double
  p = 3.14159265
  x = Sin(p / 6)
  MsgBox (x)
 End Sub

 しかし実際にこれを実行すると「 0.49999 ... 」という数字となって、真値「 0.5 」に比べて少しだけ誤差があります。
 

ワークシート関数を呼び出します

WorksheetFunction.[ワークシート関数名]

という記述でワークシート関数の「 PI() 」を呼び出すコードに変えてみましょう。

 Sub 正弦()
  Dim p As Double, x As Double
  p = WorksheetFunction.Pi()
  x = Sin(p / 6)
  MsgBox (x)
 End Sub

 これを実行すると「 0.5 」という値を得ることができます。
 

数値を度数で入れます

 場合によっては、ラディアンではなく、引数を度数 deg (degree の略。すなわち "°")で入れたいこともあると思います。deg と rad の間には

180 [deg] = π [rad]

の関係がありますから、

x [deg] = πx/180 [rad]

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

 Function DCOS(x As Double) As Double
  Dim p As Double
  p = WorksheetFunction.Pi()
  DCOS = Cos(x * p / 180)
 End Function
 Function DSIN(x As Double) As Double
  Dim p As Double
  p = WorksheetFunction.Pi()
  DSIN = Sin(x * p / 180)
 End Function
 Function DTAN(x As Double) As Double
  Dim p As Double
  p = WorksheetFunction.Pi()
  DTAN = Tan(x * p / 180)
 End Function

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

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

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

 ⇒ VBA 関数辞典トップページ

コメントをどうぞ

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください