VisualBasic6の初歩的な質問です。public functionで取得した変数をprivate subに2つ以上スマートに持って帰ってくる方法が分かりません。ひとつであればa=FunctionName()で呼出元のaに代入されるところまでは分かるのですが、たとえば、functionで外部の設定ファイルを読み込み、それを呼出元ルーチンの変数aとbとcに代入したいということを考えています。global変数とか配列変数を使えばできそうなのですが、もっともスマートな方法はないのでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/11/03 02:06:49
  • 終了:--

回答(2件)

id:jacky3 No.1

jacky3回答回数8ベストアンサー獲得回数02004/11/03 02:21:51

ポイント25pt

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

ご指定のページが見つかりません

urlはMSDNです。

まず一つ目はByRefで引数を渡す方法です。

Public Function Hoge(ByRef a As Long, ByRef b As Long, ByRef c As Long) As Long

a = 10

b = 25

c = -1

End Function

と言う関数があって

呼び出し元で

Dim a As Long, b As Long, c As Long

hoge a, b, c

Debug.Print a, b, c

とやってあげると、確かに値が帰ってきてるのがわかると思います。

あとは、ユーザー定義型を作ってそれを戻り値にするとかでしょうか。

id:snitch No.2

snitch回答回数516ベストアンサー獲得回数92004/11/03 02:25:25

ポイント25pt

ByRef つまり参照渡しで関数の引数として受け渡しを行ってはどうでしょうか

Private Sub SubA

Dim intA As Integer

Dim strB As String

Dim lngC As Long

intA = 0

strB = ””

lngC = Func(intA ,strB)

(中略)

End Sub

Public Function Func(ByRef intX As Integer, ByRef strY As String) As Long

intX = 100

strY = ”hatena”

Func = 65536

End Function

見たいな感じです。

SubAでのFuncの呼出し後には

intA = 100

strB = ”hatena”

lngC = 65536

が入ります。

id:mizushima

なるほど。そんなパラメーターがあるんですね!N88BASICしかやったことなかったもので。ありがとうございました。

2004/11/03 02:27:57
  • id:snitch
    参照渡しと値渡し

    関数の引数は何も指定しない場合には自動的に参照渡し(ByVal)になります。
    明示的にByValで指定した場合のみ値渡しになります。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません