Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2010)
商の計算について
投稿日時: 18/01/14 19:48:19
投稿者: @たけし

EXCEL VBAの商の計算について教えてください。
 
Sub test()
 
i = 4
j = 2
k = -2
 
Debug.Print j ^ k
x = i \ (j ^ k)
Debug.Print x
 
End Sub
 
上記を動作せせると、「0で除算しました。」のエラーになってしまい
正しい答えが返ってきません。(赤の数式の部分がエラー)
EXCEL VBAの商にはバグがあるのでしょうか。どうか教えてください。
ちなみに、ワークシートで
=QUOTIENT(4,1/4)
これを計算させると正しい答え「16」が返ってきます。
よろしくおねがいします。

回答
投稿日時: 18/01/14 21:45:44
投稿者: WinArrow
投稿者のウェブサイトに移動

割り算は
 
「\」
ではなく
「/」
を使いましょう。
 
x = i / (j ^ k)
 
変数は、宣言することをお勧めします。
 

dim i As long,j As Long,k As Long, X As long

回答
投稿日時: 18/01/14 21:54:09
投稿者: カリーニン

横から失礼します。
詳しく調べてませんが、参考になると思います。
 
https://www.adonetvb.com/Learning/BackSlashOperator.html

回答
投稿日時: 18/01/14 21:59:24
投稿者: simple

\ 演算子 のヘルプを確認して下さい。
> 除算を実行する前に、数式はバイト型 (Byte)、整数型 (Integer)、または長整数型 (Long) の式に
> 丸められます。

仕様ですから如何ともしがたいでしょう。
 
x = Application.Quotient(i, j ^ k)
としてはどうですか?

投稿日時: 18/01/14 22:26:41
投稿者: @たけし

WinArrowさんへ単純な割り算ではなく「商」を求める必要があります。説明のため必要部分を
抜き出したため、宣言をしてませんでした。
カリーニンさんへ整数演算だということで納得しました。
 
\ 演算子のヘルプを見て自己解決しました。ヘルプには
"除算を実行する前に、数式はバイト型 (Byte)、整数型 (Integer)、または長整数型 (Long) の
式に丸められます。"
との文がありました。つまり、「0.25」は整数に丸められて「0」になってしまい、結果、
「0で除算しました。」のエラーが出ているのだとわかりました。
ワークシートで"=QUOTIENT(4,1/4)"が計算できていたため、VBAでエラーになるとは思っていま
せんでした。
 
これにて、解決済みにします。ありがとうございました。