アクセス担当のまみです。
フォーカスを移動させたくない時ってありませんか?
例えば必須項目のチェックの後とか、二重登録のチェックの後とか。
「SetFocus」を使ってうまくいくときもあるけど。「LostFocus」の時には使えないみたいで・・・
次にフォーカスが移動してほしくないんだけどなぁ・・・
色々試していて、フォーカスを移動させない方法がわかったので、今回はその方法をお伝えしますね!
Contents
ファイルを準備しよう
説明のために「宛名印刷」ファイルを使用します。
プログラム作成の基本となる「フォームの作成」、「データの登録」、「データの検索」、「データの修正」、「レコードの削除」を「宛名印刷」ファイルを作成しながら、お伝えしています。
シリーズを読破すると、ついでにはがきの宛名印刷ができるようになっちゃいます。
お時間がありましたら是非、下記の記事から作成してみてください。
フォーカスを移動させない
「宛名印刷」ファイルで既に入力のある氏名を入力すると、メッセージボックスが表示されるようにしています。詳しくは下記の記事をどうぞ!
現在のプログラムでは、表示されたメッセージで「いいえ」を選んだら、次の「郵便番号」にフォーカスが移動してしまいます・・・
色々試したけど、方法がわからなかったので、そのままになっていたのですが、見つけっちゃったんです!
「F_データ入力」をデザインビューで開きましょう。
①「tx氏名」を選択した状態で、プロパティーシートの「イベント」タブを選択します。
③フォーカス喪失時で「イベントプロシージャ」を選んで、を左クリックします。
「tx氏名_LostFocus」のコードを「tx氏名_Exit」に貼り付けます。
「Private Sub tx氏名_LostFocus()」と「End Sub」はそのままでもいいですが、私は削除してしまう派です。
時々、さっき削除しちゃった~置いておけばよかったって時もあったりします・・・
ここで、「Me.txしめい.Value = “”」の後に下記のコードを追加しましょう。
Cancel = True
コードをコピーされたい場合は下記の記事を参考にしてくださいね!
Cancel = Trueって記載することで、次にフォーカスが移動しないようにしてくれるんです。
「tx氏名_LostFocus」では使えないけど、「tx氏名_Exit」では使えるんだって!
動作確認
では、「F_データ入力」フォームでフォームビューを開いて、動作確認をしてみましょう。
たくさん動作確認したら、「F_データ入力」は保存にして終了してくださいね!
まとめ
コードを使うと、こんな動きをして欲しいなってことは、だいたい思いどおりになります。
自分が思っている方法でできないなって思っても、別の方法でできたりとか。
マクロではできないこともあるのでやっぱりVBAがおススメかな!