アクセスVBAブレークポイントを使ってデバッグしてみよう!

 

アクセス担当のまみです。

 

プログラム作成で重要なのはやっぱり動作確認!

動作確認で必要になってくるのがデバッグなのですが、デバッグのやり方ってよくわからないですね・・・特にプログラムはじめたばかりだと・・・

今回は、デバッグのやり方をお伝えしますね。

 

Contents

ファイルを準備しよう

 

今回、説明のために「宛名印刷」ファイルを使用します。

プログラム作成の基本となる「フォームの作成」、「データの登録」、「データの検索」、「データの修正」、「レコードの削除」を「宛名印刷」ファイルを作成しながら、お伝えしています。

シリーズを読破すると、ついでにはがきの宛名印刷ができるようになっちゃいます。

お時間がありましたら是非、下記の記事から作成してみてください。

 

アクセスVBAでフォームにボタンを配置しよう

2018年9月18日
 
 
 

それでは、「宛名印刷」ファイルを開いて、コードを表示してみてください。

 

Dcountって何してくれるの?

 

 

DCount(“氏名”, “Q_重複チェック”)で、「Q_重複チェック」クエリの「氏名」フィールドの数を取り出してくれます。

「F_データ入力」の氏名に以前入力したことのある氏名を入力してみましょう。

 

 

表示されるメッセージは「はい」を選択して、「Q_重複チェック」クエリを開いてみましょう。

 

 

私の場合は、「田中 聡」さんのデータが2件登録されています。

つまり、DCount(“氏名”, “Q_重複チェック”)の値は2ということなのですが、このことを確認してみましょう。

 

デバッグをやってみよう

 

コードの画面を表示してみましょう。

 

 

DCount(“氏名”, “Q_重複チェック”)の数を知りたいので、①「If DCount(“氏名”, “Q_重複チェック”) > 0 Then」の左側を左クリックします。すると、(ブレークポイント)がついて、反転表示されました。

 

プログラムを実行すると、ここで止まってくれるんです。

 

ここで止まってねって設定することを、()ブレークポイントを設定するって言います。

 

あとは、②「表示」タブからイミディエイトウィンドウを選択しておきましょう。

 

 

それでは、「F_データ入力」に戻って、プログラムを実行してみましょう!

 

 

「氏名」を入力して、エンターを押す!

 

(はてな君)
あっ!コードの画面に切り替わって、ブレークポイントの行が黄色になってる!

 

そうなんです。ブレークポイントの手前でプログラムが止まって、今どんな状態(エラー等)なのかが調べられるんです。

 

ちなみに、今回はブレークポイントは一か所のみの設定にしましたが、複数設定できるので、少しずつプログラムを動かすことも可能です。

 

ここで、イミディエイトウインドウに「?DCount(“氏名”, “Q_重複チェック”)」と入力してみましょう。

 

 

入力したらエンターキーを押してみてください!

 

 

「Q_重複チェック」のデータ件数と同じ数字が表示されていますでしょうか?

もし、何も表示されていなかったり、違う数字が表示されていたりすると、クエリの作成をどこかで間違っているか、コードのどこかが違うってことなので、修正してみてください。

 

 

確認が終わったら、①ブレークポイント()を左クリックして解除しておきましょう。

 

それから、②の(リセット)を左クリックして、デバッグは終了させてきましょう。

 

(はてな君)
そのまま動作確認しようとしたら動かなかった!

 

(あいちゃん)
デバッグを終了させておかないと何かしようと思っても動かないんだよ!ブレークポイントの解除し忘れてると次も又同じところで止まるよ!

 

条件分岐

 

「DCount(“氏名”, “Q_重複チェック”)」で件数を調べてくれるので、「DCount(“氏名”, “Q_重複チェック”)」の件数があるとき、つまり、既に登録があるときには、メッセージボックスを表示してくれます。

 

そして、そのメッセージボックスで「Yes」を選択すると、下記のコードまでの実行でその後のコードは実施しない。

 

    Dim nRet As Long

    If DCount("氏名", "Q_重複チェック") > 0 Then
        nRet = MsgBox("既に入力があります。登録しますか?", vbYesNo)
        If nRet = vbYes Then
        Exit Sub

 

Exit Subって、「tx氏名_LostFocus」の処理を抜けてくださいねって意味です。

 

 

「いいえ」を選択すると、その後の処理も実行されます。

「氏名」と「しめい」が空欄になるってことですね。

 

ちなみに、「Me!tx氏名.SetFocus」は「LostFocus」の処理では使えないようです。

色々試してみたのですが、「tx氏名」には止まってくれません・・・

 

「LostFocus」の処理では「tx氏名」には止まってくれないのだけど、別の処理にコードを書けば、「tx氏名」に止まってくれるってわかったので、別に記事を書きました!

 

アクセスvbaフォーカスを移動させない方法!

2018年10月8日
 

まとめ

 

デバッグの方法はいかがでしたでしょうか?

デバッグの方法も色々あるんです。

私も使ったことのない方法もあるかなぁ。

 

ちょっと挑戦してみようかな?

 
 

 

 

スポンサーリンク