dポイントプレゼントキャンペーン実施中!

以前も質問させていただきました。

If文でエラー回避でしようとして
Cancel = True
という構文を使っているのですが、近頃この文が
「変数の定義がされていません」というエラーになります。
なんでエラーがでるのかわかりません。
書くと必ずといって良いほどエラーになります。
原因はなんなのでしょうか?

このごろは、エラーでつかえないのでundoを使用しています。undoとcancelの違いもできればご教授ください。

A 回答 (3件)

コードウインドウが選択された状態でメニューの[表示]-[デバッグウインドウ]にあります。



変数や式のウォッチを表示したり、
コマンドを入力して実行させたり確認したりできる物です。

またコンパイルはデバッグですべてのモジュールをコンパイルして保存を1度は実行しておいてください。


VBAにおいて通常コードを入力して実行すると、
事前にコンパイルされていなければその都度実行時にコンパイルされ実行されます。(インタープリター呼ばれるところ)実行をスムーズに行うために事前コンパイルを上記方法で行っています。

この時点でエラーが起こるのかどうか確認してください。

また、Cancelはイベントプロシージャーの引数として各関数で宣言されているものですので、関数の引数にCancel が定義されていなければ使えません。

BeforUpdateにはありますが、AfterUpdateにはなかったと思います。利用されるイベントを確認してください。
    • good
    • 0
この回答へのお礼

いろいろいじっているうちに、イベントで()内にCancel As Integerと書かれているものしか、cancelが実行できないのに気が付きました。
いろいろご回答いただきありがとうございます。
デバッグウィンドウなのですが、私は2000を使っているのでイミディエイトウィンドウのことのようです。
コンパイルは活用していたのですが。
ウォッチやイミディエイトは活用したことがありませんでした。今後、勉強して活用しようと思います。
本当に、ありがとうございました。

お礼日時:2005/02/22 10:56

> Private Sub ○○_AfterUpdate()



上記のイベントは更新後処理ですので、
CancelではなくUndo(処理の取り消し)になります。

Private Sub ○○_BeforeUpdate(Cancel As Integer)
のような、更新前処理のイベントであれば、
Cancel(処理の中止)を行なえます。
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます。
cancelに付いては、どうにかいじっているうちに使えるイベントとそうでないイベントあることに気が付きました。

undoとcancelの違いについてご教授ありがとうございます。
すごくわかりやすかったです。

お礼日時:2005/02/22 10:58

コンパイルし直してみてください。


あとはデバッグウインドウでCancel(+Enterキー)と入力してみてください。
回避できるかもしれません。

この回答への補足

すいません。デバッグウィンドウとはなんでしょうか?
ちなみにコンパイルの時点でエラーメッセージが出ます。
実行してデバッグを出すと、最初の
Private Sub ○○_AfterUpdate()

の部分が黄色くなりました。

補足日時:2005/02/21 13:23
    • good
    • 0

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