![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは。
以前、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も見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
Acccessで2つのテーブルから1つのフォームをつくりたい
Access(アクセス)
-
Accessファイルを作成者以外は編集できないように設定するには
Access(アクセス)
-
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
6
vbaで帳票フォームで開きたい アクセス
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォームの行ごとにコンボ...
-
accessで2つ以上のフォームを起...
-
VBAでフォームのスクロールバー...
-
Accessでフォームから別フォー...
-
PDFフォームに本日の日付を自動...
-
【ACCESS2003】サブフォーム名...
-
サブフォームの新規レコードに...
-
ExcelVBAでユーザーフォーム内...
-
メインフォームからサブフォー...
-
Access2010で動的コントロール...
-
フォームで複数のチェックボッ...
-
サブフォームのコントロールの...
-
Googleフォーム・複数人の申し...
-
サブフォームのイベント取得
-
VBAにてメッセージボックスを最...
-
ToolStripStatusLabelを固定し...
-
PDFフォーム内で日付計算したい...
-
Google form を利用して 問い合...
-
Accessでサブフォームの合計を...
-
フォーム上の全てのコントロー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
サブフォームの新規レコードに...
-
Accessでフォームから別フォー...
-
メッセージボックスの背景色
-
PDFフォームに本日の日付を自動...
-
accessで2つ以上のフォームを起...
-
VB.net(VB)で、フォームにExcel...
-
筋トレ初心者です。 ジムでひた...
-
Access 無操作の場合、自動で閉...
-
サブフォームのイベント取得
-
サブフォームの行ごとにコンボ...
-
VBプログラムの終了
-
ユーザーフォーム上にアイコン...
-
アクセスVBA フォームのス...
-
ディスプレイ解像度より大きな...
-
PDFフォーム内で日付計算したい...
-
フォーム上の全てのコントロー...
-
VBAでフォームのスクロールバー...
おすすめ情報