- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル、VBAで図形の回転角度指定?)
エクセル、VBAで図形の回転角度指定
このQ&Aのポイント
- 直角三角形を回転させるマクロを作成したい
- 鋭角の角度を指定する方法がわからない
- VBAに詳しくないので、どこが間違っているのかわからない
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
この辺の数学関数にはあまり詳しくないので、外しているかもしれませんが、まずワークシート関数とVBAの関数は違います。同じ機能を持った関数が別の名前だったり、同じ名前の関数が別の機能だったりします。 それで、VBAからワークシート関数を使うには、お書きの通りApplication.WorksheetFunctionを使いますが、 Application.WorksheetFunction.Degrees(Atan(y/x)) では、Degreesはワークシート関数なのですが、その引数となるAtan()はVBAの関数と解釈されます。 それで、VBAの関数でもアークタンジェントを求めるのがAtan()だと上の式でもうまくいくのですが、なぜかVBA関数ではAtn()という名前です。したがって、上の式は、 Application.WorksheetFunction.Degrees(Atn(y/x)) とすればうまくいくかもしれません。 しかし、そもそもワークシート関数を使わずにVBAの関数だけでなんとかならないか、DEGREES()に相当するVBA関数を探したのですが、VBAのヘルプでは、 「角度の単位を度からラジアンに変換するには、度にπ/180 を掛けます。ラジアンから度に変換するには、ラジアンに 180/πを掛けます。」 と書かれており、関数はないようです。 したがって、あえてワークシート関数を使わずに書くとすると、πは4*Atn(1)で求められるので、 Atn(y/x)*(180/(4*Atn(1))) と書いてもいいかもしれません。
お礼
ワークシート関数とVBA関数は違うんですね。 教えていただかなければ知らないままでした。 ありがとうございます! Atn(y/x)*(180/(4*Atn(1))) でやってみようと思います!