「みんな教えて! 選手権!!」開催のお知らせ

「出金も入金も0じゃないならば」としたい場合、どのようなifステートメントを作ればいいでしょう?

Sub test()
Dim 出金 As Currency
Dim 入金 As Currency

出金 = 0
入金 = 0

'(1)
If Not (出金 = 0) And Not (入金 = 0) Then
MsgBox "出金0入金0ではありません"
End If

'(2)
If (出金 = 0) And (入金 = 0) Then
Else
MsgBox "出金0入金0ではありません"
End If

End Sub

(1)だとうまくいきません。
(2)のように Elseを使って対応するしかないのでしょうか?
(2)でいけますが、今後の勉強の為にelseを使わずに、「どちらでもないならば」の方法を教えてください。

A 回答 (6件)

No.5 です。

何度もすみませんが、ちょっと書き損じたので、修正させてください。

「なお(2)だと、出金か入金のどちらか一方のみが 0 の場合でも」ではなく、「なお(2)だと、出金か入金のどちらか一方のみが 0 でない場合でも」と言いたかったのです。紛らわしいですが、よろしくお願いします。


なお、次の条件も参考にしてください。

「出金と入金がともに 0 である」

出金 = 0 And 入金 = 0
あるいは
出金 + 入金 = 0     ……出金、入金が負の値を取らない場合に記述可能

この条件は、No.5 の「出金と入金のいずれか一方は 0 でない」という条件の「否定」になっています。すなわち次のように書いても同じです。

Not (出金 <> 0 Or 入金 <> 0)
あるいは
Not (出金 + 入金 > 0)      ……出金、入金が負の値を取らない場合に記述可能
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/24 22:05

「出金と入金のいずれも 0 でない」という条件であれば、No.4 さんのコードで十分と思います。

ベストアンサーは辞退します。

なお(2)だと、出金か入金のどちらか一方のみが 0 の場合でも、「出金0入金0ではありません」とのメッセージが出ます。

「出金も入金も 0 でない」という日本語の言い方では、その解釈に紛れが生じる余地があります。次の 2 つの条件を厳密に区別してコーディングしてください。

●「出金と入金のいずれも 0 でない」
 出金 * 入金 <> 0
●「出金と入金のいずれか一方は 0 でない」
 出金 <> 0 Or 入金 <> 0
 あるいは
 出金 + 入金 > 0      ……出金、入金が負の値を取らない場合に記述可能
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/24 22:04

こんなのでもいいですね



If 出金 * 入金 <> 0 Then
  MsgBox "出金0入金0ではありません"
End If
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/24 22:04

(1)は、


Not (出金 = 0) And Not (入金 = 0)
ではなくて、

Not (出金 = 0) Or Not (入金 = 0)
もしくは
Not (出金 = 0 And 入金 = 0)

ですね。ド・モルガンの法則を覚えておくとよいと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/24 22:04

まちがったm(__)m



If (出金 <> 0) OR (入金 <> 0) Then
MsgBox "出金0入金0ではありません"
End If
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/24 22:04

If (出金 <> 0) And (入金 <> 0) Then


MsgBox "出金0入金0ではありません"
End If
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/07/24 22:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報