Excel VBA質問箱 IV

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

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


47214 / 76732 ←次へ | 前へ→

【34479】Re:返り値が複数のユーザーファンクション
発言  ichinose  - 06/2/3(金) 13:17 -

引用なし
パスワード
   ▼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キーで確定します。

各セルに違う値が設定されます。

確認してください。
0 hits

【34472】返り値が複数のユーザーファンクション sheboygan 06/2/3(金) 12:48 質問
【34475】Re:返り値が複数のユーザーファンクション inoue 06/2/3(金) 13:11 発言
【34545】Re:返り値が複数のユーザーファンクション sheboygan 06/2/6(月) 11:24 お礼
【34479】Re:返り値が複数のユーザーファンクション ichinose 06/2/3(金) 13:17 発言
【34546】Re:返り値が複数のユーザーファンクション sheboygan 06/2/6(月) 11:27 お礼
【34548】Re:返り値が複数のユーザーファンクション sheboygan 06/2/6(月) 13:43 質問
【34549】Re:返り値が複数のユーザーファンクション Blue 06/2/6(月) 14:15 発言
【34550】Re:返り値が複数のユーザーファンクション ごんぼほり 06/2/6(月) 14:28 回答
【34552】Re:返り値が複数のユーザーファンクション sheboygan 06/2/6(月) 15:16 お礼
【34482】Re:返り値が複数のユーザーファンクション Kein 06/2/3(金) 13:59 回答
【34547】Re:返り値が複数のユーザーファンクション sheboygan 06/2/6(月) 11:35 お礼

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