|
どうやら、VBAとExcelの数式での演算の優先順位が違うみたいです。
VBAでは、
べき乗が−符号より優先されますが、Excelの数式では、−符号が優先されるようです。
しかし、算数では、-2^2=-4 と習いましたよね??
今度は、
'===========================================================
Sub test3()
MsgBox "1-2^2 = " & 1 - 2 ^ 2
MsgBox "[1-2^2] = " & [1-2^2]
End Sub
これを実行すると、
1 - 2 ^ 2 も [1-2^2] も -3 という結果が表示されます。
[1-2^2]は、1+4=5では と思うのですが・・・。
結論として、演算優先順位に曖昧な箇所があるので
明示的に()ではっきり指示する癖を付けておくと、
思わぬ計算違いに合わなくて済みそうですよ!!
Sub test4()
MsgBox "[(-2)^2] = " & [(-2) ^ 2]
End Sub
とこのように・・・。
因みにWindowsなら簡単に確認できるVbscriptで
msgbox -2^2
この上記のコードを実行させたら どんな結果になると思いますか?
確認していただければ、一目瞭然ですが、結果は、「4」でした。
意外です・・よね?
|
|