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

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

フォーカスを移動させたくない時ってありませんか?

例えば必須項目のチェックの後とか、二重登録のチェックの後とか。

「SetFocus」を使ってうまくいくときもあるけど。「LostFocus」の時には使えないみたいで・・・

次にフォーカスが移動してほしくないんだけどなぁ・・・

色々試していて、フォーカスを移動させない方法がわかったので、今回はその方法をお伝えしますね!

 

ファイルを準備しよう

 

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

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

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

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

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

2018年9月18日
 

フォーカスを移動させない

 

「宛名印刷」ファイルで既に入力のある氏名を入力すると、メッセージボックスが表示されるようにしています。詳しくは下記の記事をどうぞ!

アクセスVBAクエリを使ってかんたん重複チェック

2018年9月29日

 

現在のプログラムでは、表示されたメッセージで「いいえ」を選んだら、次の「郵便番号」にフォーカスが移動してしまいます・・・

 

色々試したけど、方法がわからなかったので、そのままになっていたのですが、見つけっちゃったんです!

「F_データ入力」をデザインビューで開きましょう。

 

①「tx氏名」を選択した状態で、プロパティーシートの「イベント」タブを選択します。

 

③フォーカス喪失時で「イベントプロシージャ」を選んで、を左クリックします。

「tx氏名_LostFocus」のコードを「tx氏名_Exit」に貼り付けます。

 

「Private Sub tx氏名_LostFocus()」と「End Sub」はそのままでもいいですが、私は削除してしまう派です。

時々、さっき削除しちゃった~置いておけばよかったって時もあったりします・・・

 

 

ここで、「Me.txしめい.Value = “”」の後に下記のコードを追加しましょう。

 

コードをコピーされたい場合は下記の記事を参考にしてくださいね!

関連記事

 

Cancel = Trueって記載することで、次にフォーカスが移動しないようにしてくれるんです。

「tx氏名_LostFocus」では使えないけど、「tx氏名_Exit」では使えるんだって!

 

(はてな君)
「LostFocus」と「Exit」って何が違うの?
(あいちゃん)
う~ん難しい質問ですね。ほとんど同じ動きなんだけど、「Exit」は「Cancel」って引数が使えることかな。

動作確認

 

では、「F_データ入力」フォームでフォームビューを開いて、動作確認をしてみましょう。

 

(はてな君)
理想の動きになったよ!

たくさん動作確認したら、「F_データ入力」は保存にして終了してくださいね!

 

まとめ

 

コードを使うと、こんな動きをして欲しいなってことは、だいたい思いどおりになります。

 

自分が思っている方法でできないなって思っても、別の方法でできたりとか。

マクロではできないこともあるのでやっぱりVBAがおススメかな!