• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでプロシージャ間のデータを渡したい )

VBAでプロシージャ間のデータを渡す方法

このQ&Aのポイント
  • VBAでプロシージャ間のデータを渡す方法について説明します。
  • main関数内でget_Record関数を呼び出し、データを取得し、変数に格納します。
  • main関数内で利用するために、get_Recordで取得した変数を渡す方法について調べています。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 Dim x = 10 という書き方は、VBAではないようですし、細かい部分では、他にもエラーが残っているかもしれませんね。別にグローバル変数にしなくても、モジュールにいろんなものを突っ込まなければ、モジュールレベル(Private)でも良いとは思います。関数プロシージャでも、Sub プロージャでも、変数は構造体でも、配列変数でも、そのまま扱っても、それ自体は、どちらでも良いと思います。スタイルとしては、Access の場合は、関数型にすることは多いと思いますが、ご自分で出来るスタイルにしておいて、不具合があれば、その後で換えればよいと思います。 Call get_Record(x) から、戻してくるなら、 Sub Main()   Dim this_Hensuu As String   Dim this_Hensuu2 As String   Const x = 10   Call get_Record(x, this_Hensuu, this_Hensuu2)      '...   '... End Sub Sub get_Record(ByRef x As Integer, this_Hensuu As String, this_Hensuu2 As String)  'Dim this_Hensuu As String ''いらない  'Dim this_Hensuu2 As String ''いらない   Dim get_SQL As String 'Dim を入れる   get_SQL ="" '変数宣言するなら不要かも   get_SQL="Select * from TABLE1 where ID='" & x & "' ;"   rs = Openrecordset(get_SQL,opendynaset)  this_Hensuu = rs!名前  this_Hensuu2 = rs!名前2  とすればよいのでは。なぜ、ByRef x As Integer と、参照渡しにしているのでしょうか?値渡しでも良いと思います。たいしたことではありませんが。

その他の回答 (1)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

Functionにして、値を返す。 これが、いちばん普通の使い方だと思います。 このとき、Hensuuが2つ有るようなので(HensuuとHensuu2)配列にして返しましょう。 Function get_Record(Byref x As Integer)  Dim rs As Dao.recordset  Dim this_Hensuu(0 To 1) As String  get_SQL As String  get_SQL =""  get_SQL="Select * from TABLE1 where ID='" & x & "'"  rs = Openrecordset(get_SQL,opendynaset)  this_Hensuu(0) = rs!名前  this_Hensuu(1) = rs!名前2  get_Record = this_Hensuu End Function で、main側は配列で受け取って使用する。 (例は全角スペースを使用しています。)

mellow91
質問者

お礼

ありがとうございます!functionを使えばなんとかなるかなと思っていたのですが、返したい変数が2つあるので、返せないと思っていたのですが、配列を使えばいいんですね。勉強になります、ありがとうございました!

関連するQ&A