ざっくり説明
コタンジェント、セカント、コセカントが求められます。
また、三角関数6種類の引数が度数法バージョンも作りました
一部が力技です。見ればわかるけれど。
コード
まず大前提として、
Sin()、Cos()、Tan() はVBA関数に存在するので作る必要は無いです。
Function Cot(ByVal number As Double) As Double
'================================
'用途 :コタンジェントを求める (弧度法)
'--------------------------------
'第一引数:角度-ラジアン (Double型)
'戻り値 :最下行 行番号 (Double型)
'================================
Dim tanValue As Double
tanValue = Tan(number)
If tanValue = 0 Then tanValue = 0.000000000000001
Cot = 1 / tanValue
End Function
Function Sec(ByVal number As Double) As Double
'================================
'用途 :セカントを求める (弧度法)
'--------------------------------
'第一引数:角度-ラジアン (Double型)
'戻り値 :最下行 行番号 (Double型)
'================================
Dim cosValue As Double
cosValue = Cos(number)
If cosValue = 0 Then cosValue = 0.000000000000001
Sec = 1 / cosValue
End Function
Function Csc(ByVal number As Double) As Double
'================================
'用途 :コセカントを求める (弧度法)
'--------------------------------
'第一引数:角度-ラジアン (Double型)
'戻り値 :最下行 行番号 (Double型)
'================================
Dim sinValue As Double
sinValue = Sin(number)
If sinValue = 0 Then sinValue = 0.000000000000001
Csc = 1 / sinValue
End Function
Function SinDegree(ByVal number As Double) As Double
'================================
'用途 :サインを求める (度数法)
'--------------------------------
'第一引数:角度-度 (Double型)
'戻り値 :最下行 行番号 (Double型)
'================================
Dim radianValue As Double
radianValue = number * Atn(1) * 4 / 180
SinDegree = Sin(radianValue)
End Function
Function CosDegree(ByVal number As Double) As Double
'================================
'用途 :コサインを求める (度数法)
'--------------------------------
'第一引数:角度-度 (Double型)
'戻り値 :最下行 行番号 (Double型)
'================================
Dim radianValue As Double
radianValue = number * Atn(1) * 4 / 180
CosDegree = Cos(radianValue)
End Function
Function TanDegree(ByVal number As Double) As Double
'================================
'用途 :タンジェントを求める (度数法)
'--------------------------------
'第一引数:角度-度 (Double型)
'戻り値 :最下行 行番号 (Double型)
'================================
Dim radianValue As Double
radianValue = number * Atn(1) * 4 / 180
TanDegree = Tan(radianValue)
End Function
Function CotDegree(ByVal number As Double) As Double
'================================
'用途 :コタンジェントを求める (度数法)
'--------------------------------
'第一引数:角度-度 (Double型)
'戻り値 :最下行 行番号 (Double型)
'================================
Dim radianValue As Double
radianValue = number * Atn(1) * 4 / 180
Dim tanValue As Double
tanValue = Tan(radianValue)
If tanValue = 0 Then tanValue = 0.000000000000001
CotDegree = 1 / tanValue
End Function
Function SecDegree(ByVal number As Double) As Double
'================================
'用途 :セカントを求める (度数法)
'--------------------------------
'第一引数:角度-度 (Double型)
'戻り値 :最下行 行番号 (Double型)
'================================
Dim radianValue As Double
radianValue = number * Atn(1) * 4 / 180
Dim cosValue As Double
cosValue = Cos(radianValue)
If cosValue = 0 Then cosValue = 0.000000000000001
SecDegree = 1 / cosValue
End Function
Function CscDegree(ByVal number As Double) As Double
'================================
'用途 :コセカントを求める (度数法)
'--------------------------------
'第一引数:角度-度 (Double型)
'戻り値 :最下行 行番号 (Double型)
'================================
Dim radianValue As Double
radianValue = number * Atn(1) * 4 / 180
Dim sinValue As Double
sinValue = Sin(radianValue)
If sinValue = 0 Then sinValue = 0.000000000000001
CscDegree = 1 / sinValue
End Function
使用方法
Cot()
、Sec()
、Csc()
第一引数に角度(ラジアン:rad)を渡します
SinDegree()
、CosDegree()
、TanDegree()
、CotDegree()
、SecDegree()
、CscDegree()
第一引数に角度(度:°)を渡します
仕様等
- 普段の関数名の命名からするとFindCotValueとかにしたいところですが、
既に存在するSin関数などと合わせました。 - Double型で返ってきます
Sin(0°)、Cos(90°)、Tan(0°)あたりをそのまま用いて
Cot()、Sec()、Csc()を求めるとゼロ除算となってしまうので
力技で回避するようにしています。
注意点
コセカントをCosecと書く派閥の方は各自で修正願います。
その他
どこで使うねん
使ってくれた方、どう使ったか気になるので用途をコメントして欲しいです笑
小話
関数内でπを求めるのにAtn(1) * 4
を使っている点から察することができるように、
VBAにPI()
という関数はありません。
ワークシート関数にはPi()
があるのでそれを使うこともできるのですが、
実はWorksheetFunction.Pi()
は3.14159265358979という15桁の定数を
渡しているだけなので、計算が甘くなります。
なのでアークタンジェントから算出するのが一番いいと判断し、用いました。