![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
VBAでプロシージャ間のデータを渡したい
main関数の中でget_Recordという関数を呼んでいます。この中でアクセスの
テーブルからデータを取得して、「this_Hensuu」という変数に格納します。
やりたいことは、get_Recordで取得した変数をmain関数の中で利用したいです。
main()関数外で変数を宣言してグローバル変数とすれば解決するのは
わかりますが、その他の方法でmain関数に値を渡すことは可能でしょうか?
Sub main()
Dim x = 10
Call get_Record(x)
...
...
end sub
Sub get_Record(Byref x As Integer)
Dim rs As Dao.recordset
Dim this_Hensuu As String
Dim this_Hensuu2 As String
get_SQL As String
get_SQL =""
get_SQL="Select * from TABLE1 where ID='" & x & "'"
rs = Openrecordset(get_SQL,opendynaset)
this_Hensuu = rs!名前
this_Hensuu = rs!名前2
end sub
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 と、参照渡しにしているのでしょうか?値渡しでも良いと思います。たいしたことではありませんが。
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側は配列で受け取って使用する。
(例は全角スペースを使用しています。)
ありがとうございます!functionを使えばなんとかなるかなと思っていたのですが、返したい変数が2つあるので、返せないと思っていたのですが、配列を使えばいいんですね。勉強になります、ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CGIの変数に配列を代入する方法
-
perlのCGIのハッシュを使った、...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
ビットスワップとバイトスワッ...
-
「1TB」のHDDに日本語は何字入...
-
機種依存文字をチェックしたい。
-
DataGridViewの特定列に入力さ...
-
VBAでUnicodeしか存在しない文...
-
Excel 1セル当りの文字数が2...
-
printfの%eで指数部分の桁数を...
-
Rstudioによるテキストマイニン...
-
ピクセル,dpiから容量(バイト...
-
CGIを勉強しています。¥n(改...
-
異なるドメインのサイトでcooki...
-
日付時刻を4バイトに
-
VB6でのファイルサイズ取得につ...
-
メールの件名をデコードしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GETメソッドとPOSTメソ...
-
POSTメソッドの最大容量について
-
postで送られてきたパラメータ...
-
VBAでプロシージャ間のデータを...
-
CGIの変数に配列を代入する方法
-
perl キーの集計について for...
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
エクセルシート名の制限を変更...
-
DataGridViewの特定列に入力さ...
-
stable diffusionのエラー
-
Excel VBA メール作成について ...
-
Excel 1セル当りの文字数が2...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
-
バイト列とバイナリ列の違いが...
-
ビットスワップとバイトスワッ...
-
Rstudioによるテキストマイニン...
-
VBAでShift-JISのURLエンコード
おすすめ情報