Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5472 / 13646 ツリー ←次へ | 前へ→

【50591】function()の扱い方 ken 07/8/3(金) 12:17 質問[未読]
【50592】Re:function()の扱い方 ichinose 07/8/3(金) 12:34 発言[未読]
【50595】Re:function()の扱い方 ken 07/8/3(金) 15:39 お礼[未読]
【50594】Re:function()の扱い方 ひげくま 07/8/3(金) 14:30 回答[未読]
【50596】Re:function()の扱い方 ken 07/8/3(金) 15:41 お礼[未読]

【50591】function()の扱い方
質問  ken  - 07/8/3(金) 12:17 -

引用なし
パスワード
   sub()からfunction()にaとb引数を渡します。
例 a=10 とb=100
そしてfunction()で
c=a+b と d=a*bの処理を行います。
そしてfunction()からsub()に値を返すのですが、
一つの変数しか返すことができません。

配列などを使うことでfunction()で処理した数値の値をsub()に
返すことはできないでしょうか?

お手数ですが、詳しい方がいらっしゃいましたら返信お願いいたします。

【50592】Re:function()の扱い方
発言  ichinose  - 07/8/3(金) 12:34 -

引用なし
パスワード
   ▼ken さん:
こんにちは。
>sub()からfunction()にaとb引数を渡します。
>例 a=10 とb=100
>そしてfunction()で
>c=a+b と d=a*bの処理を行います。
>そしてfunction()からsub()に値を返すのですが、
>一つの変数しか返すことができません。
>
>配列などを使うことでfunction()で処理した数値の値をsub()に
>返すことはできないでしょうか?

この事例だと配列で返す方法がよいですね。


'================================================
Sub main()
  Dim a As Variant
  Dim b As Variant
  Dim ans As Variant
  a = 10
  b = 100
  ans = func_samp(a, b)
  MsgBox "和  " & ans(1) & vbCrLf & "積  " & ans(2)
End Sub
'======================================================================
Function func_samp(ByVal a As Variant, ByVal b As Variant) As Variant
  Dim calc(1 To 2) As Variant
  calc(1) = a + b
  calc(2) = a * b
  func_samp = calc()
  Erase calc()
End Function


呼び出し先から、値を返す方法は他にもありますから、
ケースバイケースですよ!!

【50594】Re:function()の扱い方
回答  ひげくま  - 07/8/3(金) 14:30 -

引用なし
パスワード
   ▼ken さん:
こんにちは。

>配列などを使うことでfunction()で処理した数値の値をsub()に
>返すことはできないでしょうか?

配列ではありませんが、ByRefで渡す方法もありますよ。
その場合、FunctionでもSubでも出来ます。

Sub test3()
  Dim a As Integer, b As Integer, c As Integer, d As Integer
  a = 10
  b = 100
  test_calc a, b, c, d
  MsgBox "c = " & c & ", d = " & d
End Sub

Sub test_calc(ByVal a As Integer, ByVal b As Integer, ByRef c As Integer, ByRef d As Integer)
  c = a + b
  d = a * b
End Sub

【50595】Re:function()の扱い方
お礼  ken  - 07/8/3(金) 15:39 -

引用なし
パスワード
   ▼ichinose さん:
ありがとうございます。本当に助かりました。
ご丁寧にプログラムのソースまでありがとうございます。
>▼ken さん:
>こんにちは。
>>sub()からfunction()にaとb引数を渡します。
>>例 a=10 とb=100
>>そしてfunction()で
>>c=a+b と d=a*bの処理を行います。
>>そしてfunction()からsub()に値を返すのですが、
>>一つの変数しか返すことができません。
>>
>>配列などを使うことでfunction()で処理した数値の値をsub()に
>>返すことはできないでしょうか?
>
>この事例だと配列で返す方法がよいですね。
>
>例
>'================================================
>Sub main()
>  Dim a As Variant
>  Dim b As Variant
>  Dim ans As Variant
>  a = 10
>  b = 100
>  ans = func_samp(a, b)
>  MsgBox "和  " & ans(1) & vbCrLf & "積  " & ans(2)
>End Sub
>'======================================================================
>Function func_samp(ByVal a As Variant, ByVal b As Variant) As Variant
>  Dim calc(1 To 2) As Variant
>  calc(1) = a + b
>  calc(2) = a * b
>  func_samp = calc()
>  Erase calc()
>End Function
>
>
>呼び出し先から、値を返す方法は他にもありますから、
>ケースバイケースですよ!!

【50596】Re:function()の扱い方
お礼  ken  - 07/8/3(金) 15:41 -

引用なし
パスワード
   ▼ひげくま さん:
回答ありがとうございます。いろいろな方法があるのですね。
本当に助かりました。
わざわざ、プログラムのソースまでありがとうございます。
>▼ken さん:
>こんにちは。
>
>>配列などを使うことでfunction()で処理した数値の値をsub()に
>>返すことはできないでしょうか?
>
>配列ではありませんが、ByRefで渡す方法もありますよ。
>その場合、FunctionでもSubでも出来ます。
>
>Sub test3()
>  Dim a As Integer, b As Integer, c As Integer, d As Integer
>  a = 10
>  b = 100
>  test_calc a, b, c, d
>  MsgBox "c = " & c & ", d = " & d
>End Sub
>
>Sub test_calc(ByVal a As Integer, ByVal b As Integer, ByRef c As Integer, ByRef d As Integer)
>  c = a + b
>  d = a * b
>End Sub

5472 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free