• ベストアンサー

サブフォームの表示の種類をVBAで操作したい

こんばんは。 アクセスのフォームの中にサブフォームを入れていて コマンドボタンを押すたびに そのサブフォームを フォームビューか、 データシートビューか、 ピボットテーブルビューかに切り替えたいのですが VBAで可能でしょうか? 宜しくお願い致します。

  • 5tgbhy
  • お礼率96% (363/378)

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> VBAで可能でしょうか? サブフォームのCurrentViewで現在のビューを確認し、それに応じて切り替える、 ということになるかと思います。 (CurrentViewプロパティは参照専用のため、切り替えにはコマンドを使用) 具体的には以下の通り: (コマンドボタン名を「表示切替」(→親フォームに設置)、サブフォーム名を「SF」  とした場合) Private Sub 表示切替_Click()   '表示を切り替えるサブフォームに移動   '(これがないと、実際の切り替え操作時にエラーが発生)   SF.SetFocus   'サブフォームの現在のビューに合わせて、切り替えるビューを指定   Select Case SF.Form.CurrentView     Case 1  'フォームビューの場合 → データシートビューに切替       DoCmd.RunCommand acCmdSubformDatasheetView     Case 2  'データシートビューの場合 → ピボットテーブルに切替       DoCmd.RunCommand acCmdSubformPivotTableView     Case Else  '上記以外の場合 → フォームビューに切替       DoCmd.RunCommand acCmdSubformFormView   End Select   'クリックしたコマンドボタンにフォーカスを戻す(なくても可)   表示切替.SetFocus End Sub なお、ピボットグラフにも切り替える場合は、以下のようにします: Private Sub 表示切替_Click()   SF.SetFocus   Select Case SF.Form.CurrentView     Case 1  'フォームビューの場合 → データシートビューに切替       DoCmd.RunCommand acCmdSubformDatasheetView     Case 2  'データシートビューの場合 → ピボットテーブルに切替       DoCmd.RunCommand acCmdSubformPivotTableView     Case 3  'ピボットテーブルの場合 → ピボットグラフに切替       DoCmd.RunCommand acCmdSubformPivotChartView     Case Else  '上記以外の場合 → フォームビューに切替       DoCmd.RunCommand acCmdSubformFormView   End Select   表示切替.SetFocus End Sub

5tgbhy
質問者

お礼

ありがとうございます!!!

関連するQ&A

  • ACCESSのサブフォームをVBAで・・・

    よろしくお願い致します。 ACCESSのサブフォームをVBAでテーブルに入力するにはどのようにしたら良いのでしょうか? イメージ的にはボタンをクリックするとメインのフォームとサブフォームの両方のデータが、別々のテーブルに入力されるようにしたいのですが・・・ ご回答ください。お願い致します。

  • サブフォームにした方がいいのか親フォームがいいのか

    単票・帳票フォームで使う場合、 サブフォームにした方がいいのか親フォームのままのほうがいいのか。 アクセスでフォームでデータを表示する際に、 フォームのデータシートビューの場合は、 フォームヘッダーにコントロールを置けないから、 データシートをサブフォームとして、親フォームに乗せてコントロールを設置しますが、 単票・帳票フォームの場合は、フォームヘッダーにコントロールが置けますよね。 その場合でもデータシートビューのように サブフォームにした方が良いのでしょうか? そもそもどういう時にサブフォームにした方が良いのかわかりません テーブルやクエリのデータをフォームとしてデータシートビューで表したい上、 コントロールも設置したい時にサブフォームにするべきで、 それ以外(単票・帳票フォーム)はフォームのまま使うべきでしょうか? 添付の画像は、 帳票フォームをサブフォームに載せずにコマンドボタンなどを置いたバージョンです。

  • サブフォームをリクエリするには?

    アクセスのフォームにはサブフォームがあり、 親フォームの上にあるコマンドボタンで、テーブルに対してアクションクエリでレコードの削除やレコードの更新を行います。 サブフォームにはそのテーブルをソースとしたデータを表示させているのですが、 親フォームの上にあるコマンドボタンのイベントの最後に、 Me.Controls("サブフォーム").Requery を入れても、フォームのデータが#Deletedになります。 Me.Requery でも、サブフォームのデータは#Deletedになってしまいます。 フォームを開きなおしたり、並べ替えをすればデータが表示されますが コマンドボタン押下後にイベントを実行し終わったら、サブフォームのデータも更新されたデータを表示するさせるには どうすればいいでしょうか?

  • ACCESS フォーム ビュー表示を固定したい

    先ほどhttp://oshiete1.goo.ne.jp/qa3727297.html で質問したのですが、 クエリで作成したピボットテーブルをフォームで表示しているのですが、データシートから開くとピボットテーブルで表示されるのに、フォーム上のコマンドから開くようにすると、フォームビュー形式で表示されてしまい、毎回ピボットテーブルに表示形式を変更しなければなりません。。。 どうすればコマンドボタンからでもピボットテーブル形式でフォームを開くことができるのでしょうか。 お願い致します!!

  • ACCESS2007でのサブフォームとグラフについて

    access 2007での質問です。 フォーム上に既存のテーブルを基にサブフォームとピボットグラフを表示させています。 サブフォームとグラフが同じレコードソースを使用しています。 サブフォームでデータを変更した場合に、グラフも変更内容を同時に反映させる方法はどうしたら良いのでしょうか。 フォームをフォームビューからデザインビューに切り替え、また、通常のフォームビューに戻すとデータ変更内容が反映されています。 これ以外何かイベントプロシージャなどで指定はできないものでしょうか。教えてください。

  • クエリをピボットテーブルで開きたい

    フォームのコマンドボタンをクリックして「作成者別」というクエリを開いているのですが ピボットテーブルで開きたいのですがデータシートで開かれてしまいます。 クエリのデザインのプロパティ→規定のビューはピボットテーブルにしてあり、クエリをダブルクリックして開くとピボットテーブルで開かれるけど フォームのコマンドボタンからはデータシートです。 vbaコードは DoCmd.OpenQuery ("作成者別") です。 以上よろしくお願いします。

  • Access VBA:サブフォームをボタンで入れ替えるには?

    Access VBA:サブフォームをボタンで入れ替えるには? [環境]WinXP, Access2003 [ファイル内の構造] メインフォーム, 日本語の国フォーム, 英語の人名フォーム, 日本語国テーブル, 英語人名テーブル [できたこと] ・メインフォームに日本語の国フォームをサブフォームで表示させること ・日本語の国フォームに置いたボタンで英語の人名フォームに切り替えること(単体で動作確認)  (フォームのオープン&クローズ程度) [やりたいこと] 各サブフォーム(日本語に国フォームと英語の人名フォーム)内にあるボタンで、フォームを入れ替えたい [やりたいことの条件] ・トグルボタンではなくコマンドボタンを使用したい ・各サブフォームはまったくソースと表示が違うので、ソースの入れ替えはしない といった内容です。 トグルボタンでの入れ替えやソースオブジェクトの入れ替えを参考にしましたが ちょっと違う気がしました。 ご存知の方がおいででしたら、ご教示お願いいたします。

  • サブフォームをリクエリしたい

    メインフォームのコマンドボタンを押下するとvbaを使ってテーブルのデータを更新します。 メインフォームの中にはサブフォームがあり、 そのサブフォームとテーブルがリンクしています。 サブフォームにはテーブルのデータが表示されており、 メインフォームのコマンドボタン押下→テーブルデータ更新 がされると、全て#Deletedという文字が表示されます。 なので、 Private Sub cmd_データ更新_Click() Call データ更新 Me.Controls("Fサブ").Form.Requery End Sub としたのですが、 「実行時エラー’2465’:指定した式で参照されている’Fサブ’フィールドが見つかりません。」 が発生します。 Me.Controls("Fサブ").Requery これにしても同じでした。

  • サブフォームのフォームフッターが表示されません

    はじめまして、 アクセス2000で メインのフォームに作成したサブフォームのフォームフッタにコマンドボタンをつくりたいのですが デザインビューでは表示されるのに実際に実行すると表示されません。 なぜなんでしょうか?

  • サブフォームの並べ替えをしたい

    どうしても出来ないのでお知恵をお貸しください。 【1】「オートフォーム:データーシート」で、テーブル1を紐付けて、 子フォームを作成しました。 【2】「デザインビュー」で親フォームを作り、 その子フォームをドロップアンドドラッグしてサブフォームにしました。 【3】親フォームにコマンドボタンを一つ設置しました。 (図参照) 【4】コマンドボタンのイベントプロシージャーに Private Sub コマンド1_Click() Forms("親").Controls("子").Controls("入金").SetFocus DoCmd.RunCommand acCmdSortAscending '昇順並べ替え End Sub とコードを書きました。 そして、親フォームを開き、コマンドボタンを押すと、 実行時エラー2046 「コマンドアクション"昇順で並べ替え" は無効です」 となってしまいます。 しかし、図のように 子フォームのデータシート上のどれかの値にフォーカスがある状態で 標準モジュールに書き写した Sub test1() Forms("親").Controls("子").Controls("取引日").SetFocus DoCmd.RunCommand acCmdSortAscending '昇順並べ替え End Sub を実行すると 問題なく並び替えがされます。 RunCommand を使わなくてもいいので 「コマンドボタンを押したら、サブフォームの並び替えをする」には どうすればいいのでしょうか。 ご教授よろしくお願い致します。(アクセス2003)

専門家に質問してみよう