Access

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

2019年10月3日

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

自動管理システムのご依頼はATDシステムズへ

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

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

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

最初に

初めに簡単なサンプルを用意しました。これはサブフォームのフィールド1をダブルクリックしますと、右のラベルの表示が変わるものです。

フォームにおけるVBAの記述はありません。サブフォームの方に記述があります。ダブルクリックのイベントを発生させたいフィールドをクリックして選択します。
プロパティシートのイベントタブをクリックします。ダブルクリックのイベントプロシージャを選択しますとVBエディタが開きますので下記のようにコードを書きます。

Private Sub フィールド1_DblClick(Cancel As Integer)
    Forms![フォーム1]![ラベル1].Caption = "ID=" & Me!ID
    Forms![フォーム1]![ラベル2].Caption = "フィールド1=" & Me!フィールド1
End Sub

応用

他のフォームを開き、コントロールに値を転送する場合には次のようになります。転記先のコントロールがテキストボックスやコンボボックスでは.valueですが、ラベルですと.captionになります。コントロールに応じて書き換えます。

⇩が基本形になります。

Docmd.OpenForm "(転記先フォーム名)"
Forms![転記先フォーム名]![転記先コントロール名].Value = Forms![転記元フォーム名]![転記元サブフォーム名]![ダブルクリックしたフィールド名].Value

サンプルダウンロード

VBAコードがありますので、最初はセキュリティ警告メッセージが表示されます。「コンテンツの有効化」をクリックしますと、動作します。

コンテンツの有効化

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

DOWNLOAD 

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

最後に

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

-Access
-