AccessでDoCmd.GoToRecord , , acNewRec
を実行した場合、
新しく追加される行が選択されます。
一番目のフィールドがピンク色で囲まれ、
残りのフィールドは水色になります。
キーボードで入力した値は、一番目のフィールドに入力されます。(A)
しかし、サブフォームで
VBA
1Private Sub Form_Load() 2 DoCmd.GoToRecord , , acNewRec 3End Sub
を実行する場合、新しく追加される行の選択が不完全になります。
他のフィールドは水色になりますが、
一番目のフィールドがピンク色で囲まれず、そのままではキーボードで入力しても、一番目のフィールドに入力されないので、クリックでその一番目のフィールドを選択しなければなりません。
VBA
1DoCmd.GoToRecord , , acLast
を前に追加しても、同じでした。
フォーカスの問題かな?と思い、親フォームの方に
VBA
1Private Sub Form_Load() 2 Me!SubForm1.SetFocus 3End Sub
と記載しましたが、同じです。
どのようにすれば、冒頭で示した(A)の状態になるのでしょうか。
よろしくお願いします。
(追記)
サブフォームのリンク親/子フィールドは設定されていません。
また親フォームにはサブフォームのほかはラベルがあるのみです。
DoCmd.GoToRecord , , acNewRec
は、サブフォームのLoad時に実行しています。
サブフォームに新規行はあります。
データの追加もできます。
(追記)
サブフォームはデータシートビュー表示です。
2021/11/01 10:35で提示していただいた作業をしたところ、
(A)の状態になりました。
質問したサブフォームは、ナビゲーションフォームの中にフォームAがあり、さらにその中にあるサブフォームでした。説明が抜けていてすみません。それが関係していそうです。ナビゲーションフォームのタブをクリックしてフォームA(とその中にあるサブフォーム)を表示すると、サブフォームのDoCmd.GoToRecord , , acNewRecが実行され、おそらく(A)の状態になり、その後フォーカスがナビゲーションフォームのクリックしたタブに移るので、行は選択されていてもすぐには入力できない状態になるのだと思います。ナビゲーションフォームで選択するフォームが変更された場合にフォーカスを移動するか、ナビゲーションフォームのタブにフォーカスが移った後にDoCmd.GoToRecord , , acNewRecを実行すると解決するのではないかと思いますが、方法が分かりません。
よろしくお願いします。
<レイアウト>
(親フォーム)
ラベル1 ラベル2
ラベル3
列名A | 列名B |
---|---|
AA | 00 |
BB | 01 |
CC | 02 |
↑サブフォーム
回答1件
あなたの回答
tips
プレビュー