• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サブフォームのビューを切り替えたい)

サブフォームのビューを切り替える方法

このQ&Aのポイント
  • 親フォームに配置したサブフォームのビューを変更する方法を教えてください。
  • 現在、親フォームのコマンドボタンを使用してサブフォームのビューを切り替えようとしていますが、エラーが発生しています。
  • DoCmd.SelectObjectおよびDoCmd.RunCommandを使用してもエラーが発生し、サブフォームを開いていないというエラーが表示されます。フォームビューのときは切り替えることができないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 は必ず実行されるように エラー処理を追加してます。

IKLCQWBMF
質問者

お礼

デザインビューでしか切り替えられないのですか。 知りませんでした。 ヘルプをよく読んでみます。 ついでに データシート_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 とすることでうまく出来ました。 エラーの対応もしていきたいと思います。 とても助かりました。 ありがとうございました。大変参考になりました。

関連するQ&A

専門家に質問してみよう