プロが教える店舗&オフィスのセキュリティ対策術

Sub test1()
変数1 = IsEmpty(Range("C1"))
If Range("A1") > 0 And Range("B1") = 0 And 変数1 = True Then
  test2
End If
End Sub

止まったときのデバッグでの表示は
Range("A1")は「100」(セルの中身)
Range("B1")は「0」(セルの中身)
変数1はRange("C1")がエラー表示なので「True」

すべての条件を満たしているのですが、
IF条件のところで止まってしまいます。
(IF条件のところの1行が黄色くハイライトになっている状態)

止まったデバッグの後に、F5を押して実行させると、
IF条件の続きから実行されて、test2が実行されて処理が終了します。

何で、IF文のところで一度止まってしまうのかわかりません。

A 回答 (3件)

>変数1はRange("C1")がエラー表示なので「True」



そのような決まりはありません。
エラー値はエラーとして取得するので、書かれたような真偽の判定はできません。

ISERROR関数等を使ってエラーを検出する事になります。

http://excel.onushi.com/function/iserror.htm

この回答への補足

ご返答誠にありがとうございます。

申し訳ございません。
『変数1はRange("C1")がエラー表示なので「True」』のところですが、
誤記でした。

Range("C1")が空白だった場合、Trueです。
セルが空白かどうかを判断するため、IsEmpty(Range("C1"))を使用しました。

補足日時:2009/01/17 13:05
    • good
    • 0

こんにちは。



失礼かもしれませんが、一応確認します。
該当のステップでブレークポイントを
設定しているということはないでしょうか。

実行してない状態でマクロのソース見て頂いて、
もし該当行の右端に茶色の●印がついて行全体が茶色で
反転表示されてるのであればブレークポイントとなってますので
実行すると必ずそのステップで実行停止します。

もしそうだったのであれば●印をクリックして
表示を消して保存すればブレークポイントは
はずれます。

よろしくお願いします。
    • good
    • 0
この回答へのお礼

ブレークポイントは設定してません。

ご指摘いただいたとおり、
コード上は問題が無いようですね。

コードに間違いが無いということがわかったので助かりました。
誠にありがとうございました。
試行錯誤して、原因を見つけてみます。

お礼日時:2009/01/17 14:36

撒く路上にはへんなところが無いので、エラーになっていないのであれば、その部分にストップポイントを設定しているのでは?

    • good
    • 0
この回答へのお礼

コードに間違いは無いことが確認できました。
ありがとうございました。

お礼日時:2009/01/17 14:38

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