Access

サブフォームをダブルクリックして別のフォームに飛ぶ(Access)(サンプル付き)

2019年10月3日

在庫管理システム⇩を作る過程で必要になったことです。

オーダーメイドの自動管理システムでさまざまな問題を解決!! サブフォームをダブルクリックして別のフォームに飛ぶ(Access)(サンプル付き)

入出庫履歴から、該当の部品の在庫を知りたいとき、いちいちフォームを開き直すのが面倒なため、サブフォームをダブルクリックすることで、開きたい別のフォームに飛ぶということをやりました。

あるフォームにサブフォームコントロールを配置して、項目をダブルクリックすることによって他のフォームのテキストボックスやコンボボックスなどに値を渡すVBA記述です。

サンプル追加

2020年6月2日:ごく簡単なサンプルを作成し、ダウンロードできるようにしました。

概要

⇩が基本形になります。記述がフォームのサブルーチンですとフォーム名は「Me」と省略可能です。標準モジュールなどフォーム外からの場合には全部書きます。

Forms![転記先フォーム名]![転記先コントロール名].Value = Forms![転記元フォーム名]![転記元サブフォーム名]![ダブルクリックした項目名].Value

上記の在庫管理システムでは、「入出庫履歴のサブフォーム」から該当の「部品型式」の列でダブルクリックすると、「在庫検索フォーム」へ飛ぶようになっています。

この場合、フォームのデザインから、サブフォームの中の「部品型式」のテキストボックスを選び、【プロパティシート】を開きます。【イベント】タブの【ダブルクリック時】にて【イベントプロシージャ】を選択し、右横の【…】ボタンをクリックしますとVBエディタが開きます。

VBAのコードを書きます。

Private Sub 部品型式_DblClick(Cancel As Integer)
	DoCmd.OpenForm "F_在庫検索" '別のフォーム(F_在庫検索)を開く
	Forms![F_在庫検索]![txt_部品型式].Value = Me!部品型式 '別のフォーム(F_在庫検索)のテキストボックスにダブルクリックした部分のテキストを転記する
	Forms!F_在庫検索!.Q_集計のサブフォーム.Requery '別のフォーム(F_在庫検索)のサブフォームのクエリを再実行する
End Sub

「F_在庫検索」と言う名のフォームに「Q_集計のサブフォーム」があります。フォームには「txt_部品型式」というテキストボックスがあり、「F_入出庫履歴」にあるサブフォームの部品型式の所(「Me!部品型式」)でダブルクリックすると、「F_在庫検索」フォームを開いて、そのフォームにある「Q_集計のサブフォーム」を再クエリをするという構成になっています。

転記先コントロールがラベルの場合はValueではなくCaptionになります。

この記述だけでわからなければ、「在庫管理システム」にAccessサンプルがありますので、ダウンロードして中身を見てみてください。

フォーム「F_在庫検索」は⇩のようになっています。

サンプルダウンロード

フォーム1にサブフォームを作成し、フィールド1でダブルクリックすると、同じフォーム内の右横のテキストボックスに情報を渡すサンプルを作りました。

ファイルを最初に開く際に「コンテンツの有効化」をクリックしてください。

コンテンツの有効化

拡張子を.mdbにしてあります。Access2002以降で開けると思います。

DOWNLOAD 

サブフォームをダブルクリックして別のフォームに飛ぶ(Access)(サンプル付き)

最後に

これをやりたくて、結構ググりましたが、なかなかみつからずに苦労した部分です。

誰かの参考になれば幸いです。

-Access
-

Please disable your adblocker or whitelist this site!