Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2010)
サブフォームで次のレコードに移動させない方法は?
投稿日時: 17/10/27 15:02:51
投稿者: mendel

サブフォームで次のレコードに移動させない方法は?
 
メインフォームにサブフォーム(シートビュー)を表示してます。
サブフォームにてTABキーまたはEnterキーで、
レコードに移動させないにはどうすればよいですか?
 
試したこと
サブフォームのプロパティにて
レコードセット:スナップショット を設定しています。
データ入力用:はい を設定しています。
Tabキー移動:カレントレコード を設定しています。
メインフォーム:開くときイベントにて以下のコードを記述しました。
 
Dim childform As Form
Set childform = Forms![親フォーム]![子フォーム].Form
Const CYCLE_MODE As Long = 1
'Const CYCLE_MODE As Long = 2 ' このモードでも状況はかわらない
childform.Cycle =CYCLE_MODE
 
フォームビューで動作確認すると、
TABキーまたはEnterキーで次のレコードに移動してしまいます。
 
以下URLの説明
Form.Cycle プロパティ (Access)
https://msdn.microsoft.com/ja-jp/VBA/Access-VBA/articles/form-cycle-property-access
 
> データ入力用に設計されたフォームのすべてのレコードにこのプロパティを設定できます。これにより、ユーザーが TAB キーを押して、新しいレコードに移動します。
 
サブフォームで次のレコードに移動させないには
どうすればよいでしょうか?
どこかのプロパティで見落としがあるでしょうか?
 
移動させないを実現できるなら「一般機能」・「VBA」どちらでもかまいません。
よろしくお願いします。

回答
投稿日時: 17/10/27 17:31:16
投稿者: sk

引用:
メインフォームにサブフォーム(シートビュー)を表示してます。

データシートビューではなく帳票フォームビューで
開くようにして下さい。

投稿日時: 17/10/30 09:52:32
投稿者: mendel

sk様、レスポンス遅くなり申し訳ありません。
 

引用:

データシートビューではなく帳票フォームビューで
開くようにして下さい。

 
帳票フォームビューに変更後、
Tabキーで次のレコードに移動しないことを確認しました。
ありがとうございます。
 
しかし、今回は「データシートビューを使う」との要望があります。
 
現在問題になっているメインフォームには、
2つのサブフォームを配置しています。
 
片側は「Tabキー移動:カレントレコード」にすることで
Tabキー移動時に次のレコードに切り替わらなくなっています。
 
プロパティを比較しましたが、
Tabキーによる次レコードへの移動が抑制できているサブフォームと
次レコードへの移動が抑制できていないサブフォームとの差異がわかりません。
 
今回は入力されたデータを閲覧すできればよいので、
サブフォームに対し、以下のコードを記述し回避しています。
 
Forms![親フォーム]![子フォーム].Enabled = False
 
回避策なので解決済みとせず、いましばらく回答待ちとさせていただきます。

投稿日時: 17/10/30 10:50:00
投稿者: mendel

自己レスです。
 
メインフォームの「Tabキー移動がすべてのレコード」に設定されており、
「カレントレコード」に変更。
 
サブフォームがフォーカスを受け取れるように以下のコードを削除。
 
Forms![親フォーム]![子フォーム].Enabled = False
 
これによりサブフォームでTabキーによる次レコードへの移動を抑制できていることを確認しました。
 
解決済みとします。