|
▼sheboygan さん:
こんにちは。
>ファンクションは、基本的に返り値がひとつですが、複数の値を返り値に持つようなユーザーファンクションを書くことは可能でしょうか?組み込み関数のfrequencyのように、範囲を指定してファンクションを書くと、その範囲の中に複数の数値を返すというようなものです。fortranのサブルーチンでは、こういうことが可能でしたが、VBAのファンクションでは可能でしょうか?ユーザーファンクションでなくても、このような趣旨のことができる簡単な方法はありますか?
Functionがかえす値を配列にすると可能です。
一例ですが
標準モジュールに
'==========================================
Function funcarray()
Dim rng As Range
If TypeName(Application.Caller) = "Range" Then
Set rng = Application.Caller
With rng
ReDim myarray(1 To .Rows.Count, 1 To .Columns.Count)
For idx = 1 To .Rows.Count
For jdx = 1 To .Columns.Count
myarray(idx, jdx) = idx * 2 + jdx
Next jdx
Next idx
End With
funcarray = myarray()
Erase myarray()
End If
End Function
として、
適当なシートのセルA1:C3を選択します。
選択した状態で数式バーに
「=funcarray()」と指定します(両端の「」は除く)。
確定は、Enterキーではなく、
Ctrl+Shift+Enterキーで確定します。
各セルに違う値が設定されます。
確認してください。
|
|