フォームを開く際のビューは「既定のビュー」プロパティで設定できます。しかしフォームを開いたあとにビューを切り替えたい場合にはこのプロパティは使えません。
そのような場合には、次のようなVBAのコードを実行します。
■データシートビューに切り替える
DoCmd.RunCommand acCmdDatasheetView
■フォームビューに切り替える
DoCmd.RunCommand acCmdFormView
ただし、問題はこの命令をどこから実行するかです。フォームビューからデータシートに切り替える場合には、それ用のコマンドボタンなどを配置して、そのクリック時イベントで実行させることができます。しかしフォームがデータシートビューに切り替わるとコマンドボタンなどは非表示の状態になってしまいますので、ボタンのクリックでフォームビューに戻すということができません。そのため、それらの切り替え処理をファンクションキーや特定のキー操作に割り当てるなどの方法が必要になります。
そのような場合の別の解決策として、フォームをメイン/サブフォーム形式にするということが考えられます。ビューの切り替え対象となるフォームはサブフォームとし、切り替え用のボタンはメインフォームに配置するという方法です。これであれば、サブフォームのビューがデータシートになってもボタンは常に表示されています。
この場合には、上記とは若干異なり、次のような命令を実行します。
■サブフォームをデータシートビューに切り替える
DoCmd.RunCommand acCmdSubformDatasheetView
■サブフォームをフォームビューに切り替える
DoCmd.RunCommand acCmdSubformFormView
一例として、下図のように、メインフォーム上に「fra表示切替」という名前のオプショングループを配置し、その中に2つのトグルボタンを配置します。[データシートビュー]ボタンのオプション値が「1」、[フォームビュー]ボタンのオプション値が「2」とします。またサブフォームコントロールの名前は「frm売上明細_sub」とします。

そして、このオプショングループの更新後処理イベントプロシージャを次のようにします。
Private Sub fra表示切替_AfterUpdate()
'[表示切替]オプション切り替えの更新後処理
'サブフォームにフォーカスを移動
Me!frm売上明細_sub.SetFocus
'トグルボタンに応じてサブフォームのビューを切り替え
If Me!fra表示切替 = 1 Then
'データシートビュー
DoCmd.RunCommand acCmdSubformDatasheetView
Else
'フォームビュー
DoCmd.RunCommand acCmdSubformFormView
End If
End Sub
実行例:
■[データシートビュー]選択時
![[データシートビュー]選択時](images/tips_571b.png)
■[フォームビュー]選択時
![[フォームビュー]選択時](images/tips_571c.png)
|