[Excel VBA] 三角関数を計算する (Cot／Sec／Csc 他)

### ざっくり説明
コタンジェント、セカント、コセカントが求められます。
また、三角関数6種類の引数が度数法バージョンも作りました

一部が力技です。見ればわかるけれど。

### コード
まず大前提として、
Sin()、Cos()、Tan() はVBA関数に存在するので作る必要は無いです。

```vb:三角関数を求める (度数法)
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
```

```vb:三角関数を求める (度数法)
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桁の定数を
渡しているだけなので、計算が甘くなります。

なのでアークタンジェントから算出するのが一番いいと判断し、用いました。