- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サブフォームのビューを切り替えたい)
サブフォームのビューを切り替える方法
このQ&Aのポイント
- 親フォームに配置したサブフォームのビューを変更する方法を教えてください。
- 現在、親フォームのコマンドボタンを使用してサブフォームのビューを切り替えようとしていますが、エラーが発生しています。
- DoCmd.SelectObjectおよびDoCmd.RunCommandを使用してもエラーが発生し、サブフォームを開いていないというエラーが表示されます。フォームビューのときは切り替えることができないのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
DefaultView の設定はデザインビューでしかできません。ですので、下記のような手順が必要です。 サブフォームコントロールのソースオブジェクトをクリアする。 サブフォームをデザインビューで開く DefaultView を設定する サブフォームを閉じる サブフォームコントロールのソースオブジェクトを設定する Private Sub 帳票フォームへ切り替え_Click() On Error GoTo ErrorHandler DoCmd.Echo False Me.テーブル1のサブフォーム.SourceObject = "" DoCmd.OpenForm "顧客", acDesign Forms!テーブル1のサブフォーム.DefaultView = 1 '帳票フォーム DoCmd.Close acForm, "テーブル1のサブフォーム", acSaveYes Me.テーブル1のサブフォーム.SourceObject = "テーブル1のサブフォーム" ExitProcedure: DoCmd.Echo True Exit Sub ErrorHandler: MsgBox Err & ":" & Err.Description Resume ExitProcedure End Sub ちらつき防止の為に、DoCmd.Echo False を追加してます。 また、万一エラーが出ても DoCmd.Echo True は必ず実行されるように エラー処理を追加してます。
お礼
デザインビューでしか切り替えられないのですか。 知りませんでした。 ヘルプをよく読んでみます。 ついでに データシート_Click も作成して、 hatena1989様のご回答を参考にVBAを作成してみました。 -------------------------------------------------- Dim acFormView As Long Sub FormView切り替え() DoCmd.Echo False Me.テーブル1.SourceObject = "" 'サブフォームコントロールのソースオブジェクトをクリアする。 DoCmd.OpenForm "テーブル1", acDesign 'サブフォームをデザインビューで開く Forms!テーブル1.DefaultView = acFormView 'DefaultView を設定する DoCmd.Close acForm, "テーブル1", acSaveYes 'サブフォームを閉じる Me.テーブル1.SourceObject = "テーブル1" 'サブフォームコントロールのソースオブジェクトを設定する DoCmd.Echo True End Sub Private Sub データシートへ切り替え_Click() acFormView = 2 ' Datasheet Call FormView切り替え End Sub Private Sub 単票フォームへ切り替え_Click() acFormView = 0 '単票フォーム Call FormView切り替え End Sub Private Sub 帳票フォームへ切り替え_Click() acFormView = 1 '帳票フォーム Call FormView切り替え End Sub とすることでうまく出来ました。 エラーの対応もしていきたいと思います。 とても助かりました。 ありがとうございました。大変参考になりました。