#571 フォームを開いたあとにビューを切り替えるには? フォーム、VBA

フォームを開く際のビューは「既定のビュー」プロパティで設定できます。しかしフォームを開いたあとにビューを切り替えたい場合にはこのプロパティは使えません。

そのような場合には、次のような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


※これを実行するには、サブフォームの「フォームビューの許可」ならびに「データシートビューの許可」プロパティがともに「はい」に設定されている必要があります。
※この際、フォームが開いたときのビューの状態とトグルボタンの状態が一致するように、たとえばサブフォームの既定のビューを「データシート」としたなら、オプショングループの既定値も「1」としておきます。

実行例:
■[データシートビュー]選択時
[データシートビュー]選択時

■[フォームビュー]選択時
[フォームビュー]選択時
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved