• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル、VBAで図形の回転角度指定?)

エクセル、VBAで図形の回転角度指定

このQ&Aのポイント
  • 直角三角形を回転させるマクロを作成したい
  • 鋭角の角度を指定する方法がわからない
  • VBAに詳しくないので、どこが間違っているのかわからない

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.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))) と書いてもいいかもしれません。

eadgbe
質問者

お礼

ワークシート関数とVBA関数は違うんですね。 教えていただかなければ知らないままでした。 ありがとうございます! Atn(y/x)*(180/(4*Atn(1))) でやってみようと思います!

関連するQ&A