Microsoft Access 掲示板

サブフォームのフォーカス?

7 コメント
views
4 フォロー

ACCESS勉強中の者です。データ入力用に親子フォームを作成しており(各IDでリレーション)、子フォームの方に先にコンボボックスを選んでから他のコントロールに入力して欲しいので下記のコードを記述してます(複数箇所に)そのコントロールはNullでも可 
   If IsNull(Me.[A]) And IsNull(Me.[B]) Then
      MsgBox "先に『A』or 『B』を選択して下さい"
      Me.[A].SetFocus
      Exit Sub
   End If
それは機能しているのですが時々フォーカスがそこにないのに、上記のメッセージが出ます。入力時のカーソル位置とフォーカス位置は異なるのでしょうか? どうも直近の最後に入力したコントロールが新規レコード(コマンドで移動)の時にサブフォームのフォーカス位置になっていると思ってます(カーソル位置はそうなっていません)。
どうもこれが解決できなくて。

Tomo
作成: 2023/10/04 (水) 12:44:51
通報 ...
1
hiroton 2023/10/04 (水) 13:11:35 5db83@f966d

下記のコードを記述してます(複数箇所に)

実際に動いてほしくないコードが動くのはどこのコード?


入力してほしくないならそもそも入力できないようにしたほうが楽ですよ
使用可能Enabled)プロパティで制御できます

2

そのコードをどのイベントに記述しているかを提示してください。
Private Sub から End Sub までをすべてコピーして貼り付けてもらった方が間違いないですね。

「入力してほしくないならそもそも入力できないようにしたほうが楽ですよ」というアドバイスは私も同意です。

条件付き書式を使うとVBAも使う必要はありません。

画像1

式を選択して、条件式を入力
プレビューの右の一番右のボタン(有効化)をクリックする

画像の設定だと、[A]と[B]が未入力なら使用不可になります。

3

色々返信ありがとうございます。情報不足でしたね(すみません)。
イベントは Private Sub 摘要_GotFocus()に記述してます。サブフォームにはいくつかのコントロールがあり、その中で適用等(それはNullでもいいのですが)を入力する前に他の必要な項目を入力して欲しいのでこう記述してます。必須項目(いくつかあり)がNullで、この適用等が入力され保存されるのを防ぐ為です(その注意喚起はMsgBoxで)。
どうもメインフォームに入力後、サブフォームに映るときに時々ですが最初に投稿した現象がでます。それが不思議で・・・
古い簡易な社内だけの自作システムを使っている為、未だACCESS2003なので それにはhatenaさんの提案分(新しい書式ルール)の機能はないのですよね?

4

ACCESS2003ですか。今から20年前のバージョンですね。
そんな昔のことは記憶にないですが、下記によると条件付き書式は2000から実装されているようですね。

条件付き書式を設定したい:Access(アクセス)の使い方

インタフェースは当時からかなり変わっているので見た目は提示したスクショとはかなり異なると思いますが、使えるのではないでしょうか。

5

hatenaさんありがとうございました。普通の条件付き書式のことだったのですね。それにNull条件式を入れた場合、書式には何を記述したらいいのでしょか? 条件付き書式には色変える等しかしたことがないので・・・制御的な事ができるのでしょうか?

6

書式の右側のボタンの一番右端のボタンが 有効/無効の切り替えボタンになっていると思います。

下記のリンク先の画像の赤丸で囲まれたボタンです。

Access Tips #348 条件付き書式でテキストボックスが使用可能になってしまうときは? | T'sWare

7

hatenaさん ありがとうございます。スクショして頂いた分の最後に記載して頂いてましたね。失礼しました。
こんな機能があったのですね、全然知りませんでした。その名の通り書式が条件により変更出来るとしか思っていませんでした。早速試してみます。本当にありがとうございました。