目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
68 / 118 ツリー ←次へ | 前へ→

【162】ちょっと気になる現象1 演算優先順位 ichinose 06/12/23(土) 19:50 Excel[未読]
【163】Re:ちょっと気になる現象1 演算優先順位 ichinose 06/12/23(土) 19:51 Excel[未読]

【162】ちょっと気になる現象1 演算優先順位
Excel  ichinose  - 06/12/23(土) 19:50 -

引用なし
パスワード
   新規ブックの標準モジュールに

'==========================================================
Sub test1()
  MsgBox "-2^2 = " & -2 ^ 2
End Sub

上記のtest1を実行した場合、

-2^2 = -4

と表示されます。

では、

'=========================================================
Sub test2()
  MsgBox "[-2^2] = " & [-2 ^ 2]
End Sub

このtest2を実行すると、

[-2^2] = 4

と表示されてしまいます。
[-2^2]の結果は、セルに入力した数式「=-2 ^ 2」の値と同値です。

不思議ではないですか?

【163】Re:ちょっと気になる現象1 演算優先順位
Excel  ichinose  - 06/12/23(土) 19:51 -

引用なし
パスワード
   どうやら、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」でした。

意外です・・よね?

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
68 / 118 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free