質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

6195閲覧

Access サブフォームでDoCmd.GoToRecord , , acNewRec を実行した場合の行の選択が、通常のフォームの際と違い、すぐに入力ができない

mnbwqz

総合スコア74

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2021/10/31 09:28

編集2021/11/01 03:29

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
AA00
BB01
CC02

↑サブフォーム

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2021/10/31 09:45 編集

サブフォームのリンク親/子フィールドは設定されていますか? また設定されていても、親が確定されていない状態で、サブフォームの入力をしようとしていませんか?
hatena19

2021/10/31 13:26 編集

どのイベントで実行しているのでしょうか。 プロシージャ全体のコードを提示してください。 サブフォームに新規行はありますか(追加可能になっているか)
hatena19

2021/11/01 01:35

サブフォームはデータシートビュー表示ですか。 当方で簡単なサンプルを作成して確認してみましたが、サブフォームに、 Private Sub Form_Load() DoCmd.GoToRecord , , acNewRec End Sub だけで新規レコードへ移動して、すぐに入力できる状態でした。 新規に下記のようなメイン/サブフォームを作成して、症状が再現できるか確認してみてください。 テーブルから、フォームウィザードでデータシートビューのフォームを作成して保存する。 読み込み時に、DoCmd.GoToRecord , , acNewRec を記述しておく。 新規に空のフォームを作成して、そこに上記のフォームをサブフォームとして配置する。
guest

回答1

0

ベストアンサー

ナビゲーションフォームのサブフォームですか。
とりあえず、下記の方法で対処できました。

ナビゲーションフォームの移動コントロール内の各移動ボタンの「クリック時」のイベントプロシージャを下記のように記述します。

vba

1private sub GotoNew() 2 Me!NavigationSubform.SetFocus 3 DoCmd.GoToRecord , , acNewRec 4End Sub 5 6Private Sub 移動ボタン1_Click() 7 GotoNew 8End Sub 9 10Private Sub 移動ボタン2_Click() 11 GotoNew 12End Sub

これで移動ボタンをクリックしてサブフォームを切り替えたときに、新規レコードですぐ入力可能になります。

これだけだと、メインフォームを開いた直後は入力可能ではないので、読み込み時のイベントにも設定しておきます。

vba

1Private Sub Form_Load() 2 GotoNew 3End Sub

以下、蛇足

ナビゲーションフォームは実装された時、これは便利だとしばらく使ってみたのですが、
そのままで使うならいいのですが、いろいろカスタマイズしたり、機能追加しようとすると、
勝手にやってくれることとバッティングしたりして、いろいろ面倒でした。

タブコントロールとサブフォームを組み合わせれば、ほぼ同じことができますし、
こちらは、勝手になにもしてくれないので、カスタマイズは自由自在にできますので、
自分はこちらの方法で実装しますので、ナビゲーションフォームは使いませんね。

投稿2021/11/01 05:05

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mnbwqz

2021/11/02 10:20

ありがとうございます。ナビゲーションフォームの移動タブにコードが書けるとは知りませんでした。助かりました。ナビゲーションフォームは本(Access レポート&フォーム 完全操作ガイド)で知り、便利そうだと思ったので使いました。移動タブにコードが書ける、ナビゲーションフォームで表示しているフォーム名を取得する、VBAで実行する場合の順番(サブフォームのload→フォームのload→移動タブのclick)と言った情報を得られるサイトや本はありますでしょうか。また、上記の本にもタブコントロールについて書かれていました。見た目が同じですね。ナビゲーションフォームとタブコントロールの違い、どういった点がありますでしょうか。今回の処理を、タブコントロールに変更するとタブにフォーカスが移動しないので、ナビゲーションフォームの場合に移動ボタンの「クリック時」のイベントプロシージャに処理を書くのと比べ、命令文の記述が減ります。よろしくお願いします。
hatena19

2021/11/02 10:36 編集

ナビゲーションフォームはウィザードで作成できて、フォームの切り替えが簡単にできるようになります。ユーザーはフォームを移動ボタンにドロップするだけです。あとは、Accessで自動でやってくれま す。サブフォームを埋めこむコントロールは一つだけで、移動ボタンのクリックで表示するサブフォームを切り替えていきます。 タブコントロールはただ、ページを切り替えるだけですので、各ページにサブフォームを配置することに、なります。サブフォームはページの数だけ配置することになります。ですので、メインフォームを開くと、ページの数だけのサブフォームも開くことになります。サブフォームのデータ件数が多いとメインフォームの開くのに時間がかかるかも知れません。しかし、読み込み済みになりますので、切り替えは高速です。また、切り替えでの今回のような問題は発生しません。
mnbwqz

2021/11/04 04:49

詳しくありがとうございます。参考にします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問