アプリ版:「スタンプのみでお礼する」機能のリリースについて


If d = 0 Or d = "" Then
処理1
end if


If d <> 0 Or d = "" Then
処理1
end if

条件分岐を書いたのですが、①②ともにd=30の時に処理1がかかっていしまいます。
②の処理1はかかって当然ですが、①の処理1がかかる理由が分かりません。
どなたかご教授いただけますでしょうか。よろしくお願いします。

A 回答 (2件)

前提として①の後に直ぐ様②を実行するとして,処理1の中にdの値が変わらないとすれば,①と②の両方で処理1が動く理由が良く分からないですね(もしくはDo~Loopで①,②の処理が繰り返される場合には①,②の前後でd=""にならないとする).


質問文の①,②の両方が処理1を実行するためにはd=""にならないといけないので.
ただ,VBAにおいてd="0"とd=0では挙動が異なったりするので,その部分も注意した方が良いと思います.
デバック機能のステップインとかカーソル行まで実行などを利用してdの値をウォッチしては如何でしょうか?
    • good
    • 0
この回答へのお礼

dには
d=cells(1,1)の様にセルの値をいれていたのですが、 d = ""をcells(1,1) = ""と変更して
If d = 0 Or cells(1,1) = "" Then
処理1
end if
としたらかからなくなりました。ありがとうございました。

お礼日時:2017/07/19 13:37

処理の一部だけを切り出しても間違いは解りません。



そこへ至るまでにd=0が実行されてるかも知れないからです。
    • good
    • 0
この回答へのお礼

dには
d=cells(1,1)の様にセルの値をいれていたのですが、 d = ""をcells(1,1) = ""と変更して
If d = 0 Or cells(1,1) = "" Then
処理1
end if
としたらかからなくなりました。ありがとうございました。

お礼日時:2017/07/19 13:37

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