こんにちは。
以前、DexMachina様にご教授頂いたのですが
違うフォームを作っていたら
データシートビューからフォームビューへ切り替えられないので教えてくださいませ。(アクセス2003)
前回質問:http://okwave.jp/qa4982081.html
フォーム上(デザインビュー)にテーブルをドラッグしました。
(サブフォームのデフォルトのビューは、データシートビューになっていますが単票ビューに切り替えました。)
一度保存し、再度フォームを開くと、単票ビューで表示されるので
その状態で、
Sub test()
Forms("フォーム1").SetFocus
Select Case Forms("フォーム1").Form.CurrentView
Case 1 'フォームビューの場合 → データシートビューに切替
DoCmd.RunCommand acCmdSubformDatasheetView
' Forms("フォーム1").DefaultView = 2
Case 2 'データシートビューの場合 → ピボットテーブルに切替
DoCmd.RunCommand acCmdSubformPivotTableView
End Select
End Sub
を実行すると、ちゃんとデータシートビューに切り替わります。
そしてデータシートビューからフォームビューへ切り替えようと思い
再度上記のコードを実行しても何も起こりません。
(エラーにもなりません)
なぜでしょうか?
ちなみに規定のビューをデータシートビューにして上記マクロを実行しても同様何も起こりません。データシートビューのままです。
MsgBox Forms("フォーム1").DefaultView
で値を取得してみたら
データシートビューでもフォームビューでも0が返って来ます。
何か原因がわかる方いらっしゃいましたら
ご教授よろしくお願いします。
No.1ベストアンサー
- 回答日時:
どうも、DexMachinaです。
> なぜでしょうか?
「Forms("フォーム1").Form.CurrentView」は、「メインフォームの、現在のビュー」を
確認していることになります。
一方、「acCmdSubform~View」は、「Subform」が示すとおり、サブフォームのビュー
を切り替えるコマンドです。
従って、最初の状態では、メインフォーム・サブフォームとも「フォームビュー」ですから
「Case 1」に該当することになり、サブフォームはデータシートビューに切り替わります。
一方、次の実行時は、サブフォームは「データシートビュー」ですが、メインフォームは
「フォームビュー」のままですから、1回目と同様に「Case 1」に該当することになり、
上と同じく「データシートビュー」に切り替えるコマンドが実行されますので、
サブフォームは変化なし(データシートビューのまま)、ということになってしまいます。
従って、まずは、「Select Case」の評価対象の修正が必要、ということになります。
また、提示されたコードでは、「Case 2」では「acCmdSubformPivotTableView」、
つまり「ピボットテーブル」に切り替えるコマンドが指定されていますので、フォームビュー
に戻したいということでしたら、ここも変更する必要があります。
ということで、以下のようなコードに変更すれば、ご希望の動作になるかと思います。
(なお「MsgBox Forms("フォーム1").DefaultView」で取得できるのは「既定のビュー」、
つまり「フォームを開いた直後の表示方法」の設定値です。ビューを切り替えた後の
「現在のビュー」を取得する場合は、「CurrentView」を使用します)
Sub Test()
'フォーム1のサブフォーム「SF1」をアクティブにする
'(他のコントロールがアクティブの場合に生じるエラーを回避)
Forms("フォーム1").SetFocus
Forms("フォーム1")!SF1.SetFocus
Select Case Forms("フォーム1")!SF1.Form.CurrentView
Case 1 'フォームビューの場合
DoCmd.RunCommand acCmdSubformDatasheetView
Case Else '上記以外の場合
DoCmd.RunCommand acCmdSubformFormView
End Select
End Sub
※フォームビューとデータシートビュー以外を使用不可にしている場合は
「Case Else」を「Case 2」としてもOkです。
何度もすいません。
とても助かりました。
なるほど、サブフォームの値を取得しないとダメなんですね。
うまく行きました!
ありがとうございます。
お世話になりました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Google Drive Googleフォームについて(至急) 2 2022/06/28 21:45
- その他(プログラミング・Web制作) google formsで回答者をスプレッドシートに記載する方法 1 2023/06/23 11:22
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Visual Basic(VBA) エクセル VBAについて 2 2022/05/16 16:33
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
-
4
Acccessで2つのテーブルから1つのフォームをつくりたい
Access(アクセス)
-
5
Accessファイルを作成者以外は編集できないように設定するには
Access(アクセス)
-
6
Access サブフォームでの選択行の取得
その他(データベース)
-
7
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
8
フィルタ後のフォームの件数の取得の仕方
Access(アクセス)
-
9
ACCESS2010のVBAでフォーム内クエリのフィールド値を取得したい
Visual Basic(VBA)
-
10
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リストボックスの選択解除
-
accessで2つ以上のフォームを起...
-
VBA リストボックスをダブルク...
-
VB.net(VB)で、フォームにExcel...
-
メインフォームからサブフォー...
-
VBAにてメッセージボックスを最...
-
アクセス フォームが存在する...
-
ExcelVBAでフォーム内でブック...
-
Access 無操作の場合、自動で閉...
-
WithEvents変数について
-
フォームを1つだけ閉じる方法は?
-
データシートビューからフォー...
-
ExcelVBAでユーザーフォーム内...
-
短距離走...
-
VB.NETからエクセルを起...
-
ディスプレイ解像度より大きな...
-
ACCESS VBAサブフォーム(DATA S...
-
入力フォームをエクセルに書き出す
-
サブフォームの新規レコードに...
-
VBプログラムの終了
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
VB.net(VB)で、フォームにExcel...
-
Accessでフォームから別フォー...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
ユーザーフォーム上にアイコン...
-
アクセスVBA フォームのス...
-
VBプログラムの終了
-
アクセス フォームが存在する...
-
サブフォームの新規レコードに...
-
サブフォームの行ごとにコンボ...
-
PDFフォームに本日の日付を自動...
-
accessで2つ以上のフォームを起...
-
メッセージボックスの背景色
-
PDFフォーム内で日付計算したい...
-
VBA リストボックスをダブルク...
-
Access 無操作の場合、自動で閉...
-
ディスプレイ解像度より大きな...
-
フォーム上の全てのコントロー...
-
ToolStripStatusLabelを固定し...
おすすめ情報