• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA と JIS Full BASIC)

VBAとJIS Full BASICでピタゴラス数を求める方法

このQ&Aのポイント
  • VBAとJIS Full BASICでピタゴラス数を求めるためのコードを実行しましたが、エラーが発生しました。
  • コード中のZ = Sqr(x^2 + y^2)の部分でエラーが発生しているようです。
  • ピタゴラス数を求めるためのコードを修正して再度実行してみてください。

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

  • ベストアンサー
  • hahaha8635
  • ベストアンサー率22% (800/3610)
回答No.4

Public Function 関数名(ByVal 引数名 As データ型) As 戻り値のデータ型 ................. .............. ................. Return 戻り値 End Function https://www.adonetvb.com/Learning/FunctionProcedure.html

musume12
質問者

お礼

 ありがとうございました。

その他の回答 (3)

回答No.3

JIS Full Basic をよく知らないけど、関数は値渡しなのかな?VBAだと、参照渡しがデフォルト動作なのよね。 そんなわけで、  Function gcd(a, b) これ↑は、  Function gcd(ByVal a, ByVal b) というように変えて、値渡しであることを明記しないとダメだと思いました。

回答No.2

https://social.msdn.microsoft.com/Forums/ja-JP/a463b4ef-aa3c-4742-a122-35f5eac85f2e/vba199781239112398320472005565288124091236520055652891239812456?forum=vbajp 上記のページを見て初めて知りましたが、 ^ は64ビット環境だと、LongLongのサフィックスなんですね。 べき乗として使うには、^ の前にスペースが要るということで。

musume12
質問者

補足

 貴重な情報まことにありがとうございます。   Dim x As Double, y As Double, z As Double   z = Sqr(x*x + y*y) としてみましたが、やはり暴走します。うーん?

回答No.1

Z = Sqr(x^2 + y^2) 上記の行を Z = Sqr(CDbl(x)^2 + CDbl(y)^2) と変更すればよいかも。 Integerで計算されてしまい、オーバーフローしているのかなと思いました。

musume12
質問者

補足

 すばやい回答まことにありがとうございます。   Z = Sqr(CDbl(x)^2 + CDbl(y)^2) でやったのですが、暴走しました(笑)。  元に戻して   Dim x As Double, y As Double, z As Double としてみましたが、やはりコンパイルエラーが出ます。  VBA も BASIC も久しぶりに触るので、どこか見落としがあるのかも知れません。BASIC の方は期待通りに動くのですけどね。