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

宜しくお願い致します。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/23 11:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q山本周五郎作『さぶ』を読んだことのある方へ

山本周五郎作『さぶ』を読んだことのある方へ質問です。
あなたはこの本を読まれてどのような感想を持ちましたか?
是非お教え下さい!

Aベストアンサー

二年前の25歳のときに読みましたが、感動しました。

冒頭のさぶを励ますシーンが映像的で印象に残りましたし、
エイジがおごった性格から試練を経て、謙虚になってゆく
過程も、感動して一気に読めました。
おのぶ(でしたっけ?)がエイジをいさめるシーンもよかったです。

ただ、エイジはもてすぎかな、と。
周五郎がエイジが主人公のこの物語に「さぶ」という題名を
つけたいきさつは、解説に書かれているとおりですが、
なんとなく不思議ですね。

私は周五郎が大好きで、強い負けない人間を描くことでとても
尊敬していますが、市井の人間を描くあまり、
話がちっこくなってるな、とも思います。

この物語では、一番おのぶがかっこよく、私もエイジよりさぶがすき
です。さぶのような不器用で、それでもやさしい人間を
周五郎は英雄のエイジをささえる人間として愛したのでしょうね。

Qデータシートビューからフォームビューへ切り替えられない。

こんにちは。
以前、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が返って来ます。

何か原因がわかる方いらっしゃいましたら
ご教授よろしくお願いします。

こんにちは。
以前、DexMachina様にご教授頂いたのですが
違うフォームを作っていたら
データシートビューからフォームビューへ切り替えられないので教えてくださいませ。(アクセス2003)
前回質問:http://okwave.jp/qa4982081.html


フォーム上(デザインビュー)にテーブルをドラッグしました。
(サブフォームのデフォルトのビューは、データシートビューになっていますが単票ビューに切り替えました。)

一度保存し、再度フォームを開くと、単票ビューで表示されるので
その状態で、
Sub test...続きを読む

Aベストアンサー

どうも、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です。

どうも、DexMachinaです。

> なぜでしょうか?

「Forms("フォーム1").Form.CurrentView」は、「メインフォームの、現在のビュー」を
確認していることになります。
一方、「acCmdSubform~View」は、「Subform」が示すとおり、サブフォームのビュー
を切り替えるコマンドです。

従って、最初の状態では、メインフォーム・サブフォームとも「フォームビュー」ですから
「Case 1」に該当することになり、サブフォームはデータシートビューに切り替わります。
一方、次の実行時は、サブフォームは「デ...続きを読む

Qさぶアド

どうしたら
さぶアドが
取得できますか?
教えてください!

Aベストアンサー

ドコモとGoogleがモバイルインターネットサービスに関する業務提携に合意
http://www.nttdocomo.co.jp/info/news_release/page/080124_00.html

Gmail
https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3Fnsr%3D1%26ui%3Dhtml%26zy%3Dl&ltmpl=default&ltmplcache=2&hl=ja

QAccess2003でフォームにあるコマンドボタンで更にフォームを開く

Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。


Access2003で社員情報管理のデータベースを作成中です。
社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。

この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、以下のようなVBAを記述しました。

Private Sub コマンドボタン_Click()

DoCmd.OpenForm "詳細情報フォーム"

Forms![詳細情報フォーム![社員番号].DefaultValue = Me![社員番号]

End Sub

【社員番号】は7ケタの半角英数で、社員によって、数字だけの場合と、英数混じっている場合とがあります(データ型はテキスト型にしてあります)。

困っているのは、

1.上記を実行した際に、数字だけの社員番号は問題ないのですが、英数混じりの場合だと"社員番号"テキストボックスが「#Name?」という表示になってしまう

2."基本情報フォーム"のコマンドボタンをクリックして新規の"詳細情報フォーム"を開き(社員番号のみが反映され、他の項目は空欄の状態)、詳細情報を入力→保存したあと、別の社員番号で"基本情報フォーム"を開き、コマンドボタンで"詳細情報フォーム"を開くと、前に入力した社員の情報が出てきてしまう。
(つまり、"詳細情報フォーム"のもととなるテーブルに、1行でもレコードがあると、それが出てきてしまう。)

【詳細情報】は、
1.データを入力する社員としない社員とがいる
2.新規でレコードを作成する場合と、既存のレコードを上書きする場合とがある

ので、もととなる"詳細情報テーブル"にその【社員番号の】レコードがなければ新規入力画面を、レコードがあればそのレコードを呼び出す形にしたいのですが、英数混じりの表示の件も含め、どうすれば、正しく表示されるか教えていただきたいです。
ぜひぜひよろしくお願いします。

Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。


Access2003で社員情報管理のデータベースを作成中です。
社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。

この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、...続きを読む

Aベストアンサー

> "詳細情報フォーム"のもととなるテーブルに、1行でも
> レコードがあると、それが出てきてしまう。

これに関しては、
 a)詳細情報フォームのレコードソースに使用している
  テーブルから、基本情報フォームのデータを絞り込み
  条件とするクエリを作成し、これを詳細情報フォーム
  のレコードソースにする
 b)詳細情報フォームを開くときに、基本情報フォームの
  データでフィルタを掛ける
の、おおまかに2種類の対処方法があります。

使い勝手などからすると「a」の方がよいのですが(→「b」
の方法だと、右クリックメニューなどでフィルタを解除すると
現状と同じになってしまう)、現状からの改変が少ない分、
わかりやすいと思われる、「b」の方法を以下に提示します:
(英数混じりの場合への対処も組み込み済みです)

Private Sub コマンドボタン_Click()

  '変数の宣言
  Dim strCode As String

  '『社員番号』を「"」(ダブルクォート)で囲んだ形で記録
  '(→既定値やフィルタ条件に文字列を指定するには必須)
  strCode = Chr(34) & Me![社員番号] & Chr(34)

  '社員番号をフィルタ条件として指定して詳細情報を表示
  '(詳細情報未登録の社員の場合は、空のレコードが表示されます)
  DoCmd.OpenForm "詳細情報フォーム", , , "社員番号=" & strCode

  '既定値(DefaultValue)を設定
  '(既定値への代入なら、入力済みのデータは変更されません)
  Forms![詳細情報フォーム]![社員番号].DefaultValue = strCode

End Sub


・・・以上です。
コード中のコメントにも書きましたが、文字列を既定値やフィルタ
条件に使用する場合は、ダブルクォート(場合によってはシングル
クォート)を括ってやる必要がある、ということです。
(そうしないと、社員番号が「ABC123」の場合、その文字列では
 なく「ABC123」というフィールドやコントロールの値が参照されます
 (→そして該当するものがないので「#Name?」エラーが発生、と))

なお、日付/時刻型のデータを扱い場合は、今度は「#」で値を
括ってやる必要があります(「#2010/05/06#」など)ので、併せて
今後の参考まで。

> "詳細情報フォーム"のもととなるテーブルに、1行でも
> レコードがあると、それが出てきてしまう。

これに関しては、
 a)詳細情報フォームのレコードソースに使用している
  テーブルから、基本情報フォームのデータを絞り込み
  条件とするクエリを作成し、これを詳細情報フォーム
  のレコードソースにする
 b)詳細情報フォームを開くときに、基本情報フォームの
  データでフィルタを掛ける
の、おおまかに2種類の対処方法があります。

使い勝手などからすると「a」の方がよいのですが(→「b」
の...続きを読む

Q古典ででてくる「さぶらふ」って、読みは「さぶろう」ですか?「そぶろう」ですか?それともちがいますか?

古典ででてくる「さぶらふ」って、読みは「さぶろう」ですか?「そぶろう」ですか?それともちがいますか?

Aベストアンサー

読みは「さぶらう」です。

さぶらう【候ふ・侍ふ】
https://kotobank.jp/word/%E5%80%99%E3%81%B5%E3%83%BB%E4%BE%8D%E3%81%B5-275910

QACCESS サブフォームのビューが単票形式にならない

ACCESS初心者です。
フォームの中にサブフォームを作成しました。
単票形式にしたいのですが、デザインビューでは単票形式なのに、フォームビューに切り替えると表のようになってしまいます。
サブフォームを単票形式にするにはどうしたらいいでしょうか。

Aベストアンサー

まず、サブフォームもフォームとして作られていますか?
テーブルやクエリをサブフォームにすると、データシートでしか表示できませんよ。

フォームを作られた場合、サブフォームの『ビュー設定』(プロパティ→書式 にあります)がデータシートになっていませんか?

どうでしょうか?

Q「さぶいぼたてんだ♪おお~おお~おお~♪

ミスチルの「光のさす方へ」(確か)で、「さぶいぼたてんだ~♪」と唄ってるところありますよね?
これってどういう意味なんでしょう?ず~っと何気なく聞いて唄っていたんだけど、今になって急に気になりだしました。。。。。

Aベストアンサー

「海に漂ってたら、寒くなっちゃって鳥肌立ててしまってるんだ」
ってことでしょうねぇ。
これに対になってるのが「骨折ってリハビリ」ですから、「失敗してる」って
表現なんでしょうねぇ

#しかし、"さぶいぼ"って…^^;

Qアクセス:フォームビューからデザインビューへの切替えをロックしたい

お世話になります。
アクセス初心者ですよろしくお願いします。

《アクセス:フォーム》
◆フォームビューから、デザインビューに他者が自由に切替えをできないようにすることは簡単にできますか?

◆(目的)私が作成したものを入力担当者が勝手にさわれないようにするためです。

以上よろしくお願いいたします。

Aベストアンサー

配布はMDE形式とする。

と、言うのも使えそうですが・・・。

Qあっと驚くさぶいぼ話

すごく昔の事なんですが(おそらく15年~20年くらいは経ってると思います)、友達か姉から借りて聞いたラジオを録音したテープがありました。
そのラジオ名は分かりませんが、男の人のちょっと低めの声で、
「♪あっと驚くーさぶいぼ話ーーー!!」という感じで始まりました。
その内容がすごく面白くてとても印象に残っています。
もう一度聞きたいのですが、もうテープがなくなってしまって手に入れられません。
気になって気になって・・・
どなたか、持っている方(居ないと思いますが)、若しくは内容を知っている方は情報を教えてください。お願いします。

Aベストアンサー

私も古い記憶の彼方なので、今ひとつ自信がないのですが、
笑福亭鶴光の「オールナイトニッポン」ではないでしょうか。
http://ja.wikipedia.org/wiki/%E7%AC%91%E7%A6%8F%E4%BA%AD%E9%B6%B4%E5%85%89%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%AB%E3%83%8A%E3%82%A4%E3%83%88%E3%83%8B%E3%83%83%E3%83%9D%E3%83%B3

さすがに、プロパーな方法で当時の音源をそのまま入手することは困難でしょう。
ただし、「鶴光のオールナイトニッポン事件簿」という、
鶴光師匠が当時の思い出を語るpodcast番組が配信されているので、
それで当時の雰囲気は味わえるでしょう。
http://portal.podcastjuice.jp/dirretrieval/feed_detail.cgi?categoryid=1007&blog_id=12840&slisttart=0

Qデータシートビューとフォーム入力

データシートビューとフォーム入力
アクセス2007使用しています。
超々初心者ですがよろしくお願いいたします。
データシートビューでデータを入力するとenter keyで次の行に移ってくれますが
フォームで入力するとenter keyで次のページに移ってくれません
画面下にある、三角しるしを使用すると移動します、これをenter keyで次ページに
移動できるようにしたいと思います。
簡単な方法教えてください。
よろしくお願いいたします。

Aベストアンサー

フォームがどういったものか、わかりませんが・・・
enter keyで次のページというのも、よくわかりません。

たぶん
単票形式のフォームで、
特定のテキストボックス内で
Enterを押したときに
次のレコードに移動する

ということだと理解させていただきます。

Enterキーを入力する、「テキストボックス」の「プロパティシート」て
わかりますか?
ここの、設定値が「既定」になっていることを確認してください。

そのうえで、
ファイル→オプション→クライアントの設定

Enter入力後の動作を「次のレコード」に変更

これで、Enterキーで次のレコードへ移動します
もし、フォームが単票形式のものでしたら、
質問者さんが、言うように、次ページへ進んだように見えます。
(あくまでもレコードが次へ進んだのですよ)

表形式のフォームでしたら、次行へ進んだように見えます。

以上、わかりますか?


人気Q&Aランキング

おすすめ情報