• ベストアンサー

ACCESSのVBAでのサブルーチンへの引数と戻り値について

教えてください。 AccessのVBAで、標準モジュールに作ったサブルーチンに1つの引数を渡して、複数の戻り値(例えば「果物」を渡して、「りんご」「みかん」「いちご」をそれぞれ受け取る)を取得したいのですが、どのようにしたらよいのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.3

s_husky です。 複数のフォームから一つの検索フォームを開く。 検索結果を、それぞれのフォームの任意のテキストボックスに表示する。 この場合、一番簡単なのは、 DoCmd.OpenForm stDocName, , , stLinkCriteria, , , "フォーム名,テキストボックス名" と OpenArg sを利用することです。 検索フォームでは、 Dim strOpenArgs() Sub Form Load()   strOpenArgs()=Split(OpenArg s,",") End Sub これで strOpenArgs(0)="フォーム名" strOpenArgs(1)="テキストボックス名" となります。 後は、 Forms(strOpenArgs(0)).Controls(strOpenArgs(1))="XXXX" とすれば、呼び出し元のテキストボックスに代入することができます。 ※私も、たった一人で独習している単なるスーツのデザイナーに過ぎません。 ※頑張って下さい。

guratan2005
質問者

お礼

こんなにも早くご回答がいただけるとは思いませんでした。本当に感謝しています。 いろいろ本などを調べながら独学していますが、なかなか思った内容を見つけることができず、困っていました。 丁寧な解説でとっても分かりやすく、これで問題も解決しました。 本当に有り難うございました。

その他の回答 (2)

noname#22222
noname#22222
回答No.2

以下のは、グループ名に対するメンバーを返す関数の例です。 配列変数を ByRef で渡しています。 関数自体は、メンバー数を戻しています。 Option Compare Database Option Explicit Private Sub コマンド0_Click()   Dim I      As Integer   Dim N      As Integer   Dim strMember() As String       N = 該当するメンバーを戻す("果物", strMember())   For I = 0 To N     Debug.Print strMember(I)   Next I End Sub Public Function 該当するメンバーを戻す(ByVal GroupName As String, ByRef strMember() As String) As Integer   Select Case GroupName     Case "果物"       strMember() = Split("りんご,みかん,イチゴ", ",")     Case "車"       strMember() = Split("乗用車,パトカー,消防自動車,救急車", ",")     Case "玩具"       strMember() = Split("ぬいぐるみ,犬,旦那", ",")     Case Else       strMember() = Split("", ",")   End Select   該当するメンバーを戻す = UBound(strMember()) End Function

guratan2005
質問者

お礼

ご回答ありがとうございました。とっても参考になりました。問題も解決しそうです。 ところで、今回の質問と直接関係ないのですが、私はACCESSでVBAを初めて間がないので、変な質問かもしれません。周りに聞く人もいないので済みません。 例えば、フォームA、B、Cなど複数のフォームで商品名を入力しようとしたとき、その商品を検索するためにフォームZの検索画面で条件をいれて検索させ、その結果の商品名や商品コードなどを元のフォームのテキストボックスなどに表示させるときは、一般的にどういうやりかたをするのでしょうか? 今回の質問のように、引数と戻り値でするのか、または別の簡単なやり方があるのか…。 また、お時間のあるときにでも教えてください。 よろしくお願いします。

noname#60992
noname#60992
回答No.1

テーブル構造をそのようにすればよいのですが、 例えば八百屋さんで売っているものをテーブルにする際、 フィールドとして ・ID ・種別 ・品名 などを用意すれば 1   果物   りんご 2   果物   みかん 3   果物   いちご 4   野菜   とまと 5   野菜   きゅうり ・・・・・・・・ 種別のコードを渡して、クエリの形でこのテーブルを検索すれば、果物のリストをレコードセットとして得ることができます。 

guratan2005
質問者

お礼

ご回答ありがとうございました。参考になりました。

関連するQ&A