• ベストアンサー

アクセス2000VBAのエラー

以前も質問させていただきました。 If文でエラー回避でしようとして Cancel = True という構文を使っているのですが、近頃この文が 「変数の定義がされていません」というエラーになります。 なんでエラーがでるのかわかりません。 書くと必ずといって良いほどエラーになります。 原因はなんなのでしょうか? このごろは、エラーでつかえないのでundoを使用しています。undoとcancelの違いもできればご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keikan
  • ベストアンサー率42% (75/176)
回答No.3

コードウインドウが選択された状態でメニューの[表示]-[デバッグウインドウ]にあります。 変数や式のウォッチを表示したり、 コマンドを入力して実行させたり確認したりできる物です。 またコンパイルはデバッグですべてのモジュールをコンパイルして保存を1度は実行しておいてください。 VBAにおいて通常コードを入力して実行すると、 事前にコンパイルされていなければその都度実行時にコンパイルされ実行されます。(インタープリター呼ばれるところ)実行をスムーズに行うために事前コンパイルを上記方法で行っています。 この時点でエラーが起こるのかどうか確認してください。 また、Cancelはイベントプロシージャーの引数として各関数で宣言されているものですので、関数の引数にCancel が定義されていなければ使えません。 BeforUpdateにはありますが、AfterUpdateにはなかったと思います。利用されるイベントを確認してください。

asuka546
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

> Private Sub ○○_AfterUpdate() 上記のイベントは更新後処理ですので、 CancelではなくUndo(処理の取り消し)になります。 Private Sub ○○_BeforeUpdate(Cancel As Integer) のような、更新前処理のイベントであれば、 Cancel(処理の中止)を行なえます。

asuka546
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • keikan
  • ベストアンサー率42% (75/176)
回答No.1

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

asuka546
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A