ACCESS97のVBAでアプリケーションを作成しています。
その中でメインメニューのボタンを押した時に新しいフォームとその中のサブフォームが表示されるような処理を行っているのですが、基本的にフォームは同じのを使いまわし、その中のサブフォームをイベントによって切り替えたいのです(例えばメニュー画面でAのボタンをクリックしたら新しいフォームとその中のAAのサブフォームが、メニューのBのボタンをクリックしたらBBのサブフォームが表示するなど)。どなたか良い方法を知っていましたら教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

mnabeさんの回答に補足という形になりますが


最初は全部のサブフォームを非表示にしておいて
(デフォルトで表示させたいフォームがある時は
そのサブフォームを表示して)

フォームのボタンのクリック時に

サブフォームAA.Visible = True
サブフォームBB.Visible = False
サブフォームCC.Visible = False
サブフォームDD.Visible = False



という風に表示させたいサブフォームのみ表示
にして他を非表示にするっていうやり方です。
サブフォームAAの部分は貼り付けたサブフォー
ムの名前ではなくサブフォームコントロール名
(通常同じですが)にして下さい。


あとAccess97だとタブコントロールが使えます
ので、ご希望の処理はこちらでも可能かと思い
ます。これだとタブ毎にサブフォームを配置
するだけで、あとはタブのラベル部分をクリック
するだけで切り替えられますし。
    • good
    • 0

サブフォームコントロールに表示されるフォームを切り替えるコードの例です。



Private Sub コマンド1_Click()
 Select Case MsgBox("フォームを選択 OK→フォーム1 Cancel→フォーム2", vbOKCancel)
  Case vbOK
   Me.サブフォーム.SourceObject = "フォーム1"
   Me.サブフォーム.LinkChildFields = "ID"
   Me.サブフォーム.LinkMasterFields = "ID"  
  Case vbCancel
   Me.サブフォーム.SourceObject = "フォーム2"
End Select
End Sub
    • good
    • 0

サブフォームの数が少なければ...



 最初から全てのサブフォームを表示してしまっていて、ボタンクリックイベントで、サブフォームの表示を切り替えるのが簡単ですよ。
 少々遅いのが難点ですが...ね。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

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

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

QAccess2000のフォームでのフォームのIMEが、2度目以降変更してしまう。

アクセス初心者です。
Accsss2000のフォームでのデータ入力を楽におこなうために、例えば名前ならばテキストボックスのプロパティシートのその他タブから、IME入力モードをオンにしてかつIME変換モードを人名/地名に変更したのですが、1回目の入力はIMEが全角・人名モードになるのですが、2度目以降は半角カタカナ・人名/地名モードになってしまいます。全角ではありません。なぜでしょうか?
また上のタブにIME入力モード保持というのもありますが、どういう時に利用すればよいのでしょうか?

Aベストアンサー

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、「ひらがな/全角カタカナ/半角英数」などのモードを特に指定
 しない場合に使用します。そのため、特定モードで固定したい場合は、
 それに合わせた設定値(ここでは「ひらがな」)を指定する必要がある、
 ということです)


> 上のタブにIME入力モード保持というのもありますが、どういう時に
> 利用すればよいのでしょうか?

私自身はこの設定は使用していないのですが・・・(汗)

例えば、取引情報を入力する場合、『企業略称』テキストボックスには
「アルファベットの略称」や「漢字の略称」、「カタカナの略称」がそれぞれ
連続することになります。
このとき、同テキストボックスの『IME 入力モード』を「ひらがな」などに固定
してしまうと、アルファベットやカタカナの略称のデータを入力する際には
毎回手動で「全角カタカナ」や「半角英数」に切り替える・・・という使い方を
する方もいる可能性があります。
『IME 入力モード保持』は、恐らくそういう場合を想定した機能ではないかと
思います。
(もちろん、ひらがなからの変換で全角カタカナや半角英数に変換するように
 している人の場合は、切替は不要ですので、この設定は使用しなくても
 かまわないことになります)

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、...続きを読む

QアクセスフォームAのIDボタンをクリックするとテキスト1の内容をフォームXのテキスト7にコピーする

こんにちは、たびたびお世話になります。

すみませんいつも質問ばかりで申し訳ありません。
どうぞよろしくお願いいたします。

出荷DBと、在庫DBがあります。
出荷DB(帳票フォーム)から在庫DB(データシート)を開き、
在庫DBの在庫IDをクリックすると、
その在庫IDの製品NOを
出荷DBの出荷製品NOにコピーしたいのです。

そのようなことって多分できると聞いたのですが、

どうにやればいいのかさっぱり分からず
お助けいただきたくお願いいたします。

Aベストアンサー

Private Sub 在庫ID_Click()
Forms!出荷DB!出荷製品NO = Forms!在庫DB!在庫ID
End Sub

' これでいけると思います。

Qフォーム等入力時においてIMEが働かない(?)

よく起こる現象で、インターネットでフォーム入力や、Yahooとかの検索入力で日本語入力をしたいときに、IMEが働かない現象が起きています。半角英数のみ入力ができます。私の環境だけでしょうか‥。
キーボードの「半角/全角」キーが効かないので、IMEツールバーを出して、マウスで日本語入力の「あ」にしても入力画面では半角英数に戻ったりします。
Wordやメモ帳を起動すると、正常に働くので、メモ帳を立ち上げてそこへ入力して、コピーしてペーストをしたりして対処をしています・・。
常にメモ帳を立ち上げておけば解決とかの意味ではありません。
IEをアクティブウィンドウにした場合、IMEが働くなくのです。

Aベストアンサー

確かIEのバグだったと思います。

対処法のリンクを貼っておきますので、参考にしてください。
http://www.tku.ac.jp/~densan/local/ie7-ime/ie7-ime.html

Qフォームの中にサブフォームを作りたい

フォームの中にサブフォームを作りたいのですが、どのようにして作るのですか。

Aベストアンサー

まず、ざっとでいいですからサブフォームに表示するフォームを作成しましょう。
次にメインフォームをデザインで開き、
通常の状態(ツールバーとかカスタマイズしてなければ)であれば、ツールボックスバーの下もしくは左から4番目に
「サブフォーム/サブレポート」というコントロールがありますのでそれをメインフォームに貼り付けてください。
その後はNo.2さんのとおりに表示するサブフォームのフォーム名とかリンク関係のプロパティを設定します。

必ずしも関連するサブフォームとは限らないので、リンクのプロパティは必須ではありませんが。

QWebフォームのIMEモードを入力項目毎に自動切替

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにアプリケーション側で制御されるものが大半だと思っておりました。それを聞いてある人は「そんなことはない、世の中の大半のアプリはそんなことを制御していない、「普通」は自分でIMEで制御しながら入力するものだ」、と言っていたので議論になりました。これからウェブサイトを作ろうと思っているので、最終的にはこの議論はアプリ側にそのような実装をするかどうかというところに帰着するのですが、まずは「一般的にどうなのか」というところでご意見を頂きたいと思います。ちなみに、日本のメジャーなサイト(航空会社、ポータル、携帯電話、電気屋)10個でユーザ登録フォームを確認したところ、名前欄をクリックしてもいずれもIMEのモードはひらがなに変更されませんでした。そこで今は友人が正しくて、僕が間違っていたどころか、「そもそも、名前入力時に自動的にひらがなにモード変換されるようなサイトって本当にあるのだろうか。。」というような状態になっております。どなたか、教えてください。よろしくお願いします。

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにア...続きを読む

Aベストアンサー

IMEのON/OFFができるスタイルシート「ime-mode」は、Internet Explorerが独自に追加した仕様で、Internet Explorerでは入力モードが切り替わりますが、その他のブラウザでは保証されません。
http://www.htmq.com/style/ime-mode.shtml

今、確認したところ、IE8はもちろん切り替わり、Firefox 3.6も切り替わりましたが、Google Chromeは切り替わりませんでした。
Opera,Safari,Sleipnir…等は試してません。

大手のサイトでは「より多くのブラウザで表示できること」が求められますので、独自仕様の「ime-mode」を使っているところは少ないのではないでしょうか。
逆に「Internet Explorerしか表示できなくて良い」と割り切ってるサイトや、社内だけに公開するようなページは「ime-mode」が使われていると思います。

QACCESS97 フォームのメインメニューを非表示にする方法

97で、フォームを作成しているのですが、
データベースを起動したら、まずメインメニューが
表示されて、使用するフォームを起動したら、
メインメニューは、非表示にしたいのですが、
その設定は、どうしたら、いいのでしょうか?

Aベストアンサー

こんにちは。maruru01です。

「メインメニュー」とは何ですか?
ご自身で作成されたフォームでしょうか?
それとも、データベースウィンドウのことでしょうか。

前者であれば、
使用するフォームを開いた直後に、

Me.Visible = False

とします。

後者であれば、使用するフォームの読み込み時(Load)イベントに、

DoCmd.RunCommand acCmdWindowHide

とします。

QACCESS フォーム上 テキストボックスを移動するごとに文字の入力モードが戻ってしまう

ACCESSでフォーム上で入力をしています。
テキストボックスを移動するごとに半角英数になってしまい非常に不便です。

テーブルではIME入力モード:ひらがな、IME返還モード:一般としています。
テーブルのデザインビューの状態では指定している通りのひらがなで入力できるのが、フォームになると半角英数の状態です。
フォームのプロパティから何か設定を変更しなければいけないのでしょうか?
よろしくお願い致します。

Aベストアンサー

maigo-no-konekoさん
ACCESS2000では次の機能があります。
テーブルの項目定義のIMEの設定内容が引き継がれる仕様なのか
否か不明ですが、フォームの定義画面でテキスト項目やコンボボックス
など入力項目毎に指定します。
(ただし、シフトキーを押しながらマウスクリックすることで
複数選択できます)

1)テキストポックスのプロパティ画面を呼び出します。
2)その他 タブにIME関連の項目があります。
  IME入力モード保持 直前に入力した項目のIMEの入力設定
  状態を引き継ぐ場合は「はい」にします。直前の入力項目の
  設定によらない場合は「いいえ」にします。
  IME入力モード オンまたはひらがな等にします。
           ここでご希望の入力方法を選択します。
  IME変換モード 一般(人名や地名などを入力す場合は
  人名/地名)にします。

QAC2000でフォームから入力したデータをサブフォームに表示

ID 商品名 単位 単価で商品マスタフォームを作っています。このフォーム内にサブフォームを作っておいて
データが入力するたびにサブフォームへ表示させたいのですが、このときの条件としてID(オートナンバー)を降順(最新のデータが一番上になる)・データシート形式にしたいと思います。
T_商品(テーブル名)
Q_商品(IDを降順としたクエリ)
MF_商品(各入力テキストボックスがあるフォーム)
SF_商品(MF_商品に貼り付けるサブフォーム)
降順にすると一番若いIDのデータだけがサブフォームに
表示されるのです。
requeryは必要なのでしょうか?
よろしくお願い致します。

Aベストアンサー

MF_商品(各入力テキストボックスがあるフォーム)
SF_商品(MF_商品に貼り付けるサブフォーム)
のRecordSourceは両方ともQ_商品ですか?
そうだとすると、
MF_商品で入力するたびに、Q_商品のRequeryが必要です。さらにSF_商品をRefleshする必要があります。
ただ、MF_商品での変更が反映されるのは、レコード移動後になりますので、テキストボックスに入力したデータを反映させるには、Me.Refreshなどを実行して入力値をテーブルに保存しなければなりませんし、それらの処理を実行するとレコードを移動してしまうので、クローンやブックマークを使って元に戻る処理を加えなければならなくなります。結構面倒です。

QAccess フォームのテキストボックスに半角英字のみで入力する設定は

IME入力モードをテーブル・フォームともオフにしたのですがひらがな入力モードになってしまいます。
フォームのテキストボックスに半角英字のみで入力する設定としてプロパティのIME入力モードをオフにするやり方自体が間違っているのでしょうか。
それともATOKを使っているなど利用するパソコン側の問題でしょうか

Aベストアンサー

IME入力モードを「使用不可」にしましょう。

Qサブフォームのデータをメインフォームへ

お世話になります。
ひとつお聞きしたいのですが、サブフォームのデータをメインフォームに表示させる方法ってないのでしょうか?
データシートのサブフォームで計算させた合計の値を、メインフォームにもテキストボックスを表示させたいと思っています。
できるかどうかわかりませんが、何かいい方法がございましたら、よろしくお願いいたします。

Aベストアンサー

サブフォームの名前を「金額計算フォーム」、このサブフォームの中にある合計の値を表示するテキストボックスの名前は、「合計金額」と仮定します。

メインフォームに新しくテキストボックスを作成して、そのテキストボックスのコントロールソースを
=[Form]![金額計算フォーム]![合計金額]
とすれば、レコードの入力が確定したあと値が変わるはずですのでお試しください。

蛇足ですが、サブフォームはデータシートにしているようですが、帳票フォームの方が個人的には改造のしやすさから言って好きです。

ご参考になれば幸いです。m(__)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報