tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: 引数の数を変動できる関数を作る方法について教えてください
投稿日: 2008/03/25(Tue) 09:46
投稿者のぶ
K.J.K 様  戸豚 様 早速のレスありがとうございました

戸豚様わざわざ例文書いていただきありがとうございます。
ただ、私のイメージだとSum文のように sum(F1,F3,F6,A4) など、任意のセル位置を
カンマで区切る引数をイメージしています。
実際に、どこからどこまでの 範囲では一応再現できています。
========================================
Function hmsum(p As Object)
    nen = ActiveSheet.Name
    a = p.Address
    x1 = Sheets(nen).Range(a).Column
    xn = x1 + Sheets(nen).Range(a).Columns.Count - 1
    y1 = Sheets(nen).Range(a).Row
    yn = y1 + Sheets(nen).Range(a).Rows.Count - 1
    min1 = 0
    min2 = 0
    For x = x1 To xn                      'x
        For y = y1 To yn                  'y
            min1 = Val(Sheets(nen).Cells(y, x))
            min2 = Val(min1) + min2
        Next y
    Next x
    hmsum = min2
End Function

excelのセルに =hmsum(C3:C11) みたいに指定すれば合計します。
========================================

K.J.K 様のParamArray を調べてみました。
マイクロソフトのHPからそれらしい例文があり、動かしてみました。
====================================
    Sub Test()
        x = myfun(1)
        MsgBox x
    End Sub

    Function myfun(y As Integer, ParamArray myarr() As Variant) _
        As Integer
        myfun = otherfun(y, myarr)
    End Function

  Function otherfun(y As Integer, ByVal myarr As Variant) As Integer

        otherfun = y * 2
    End Function
=======================================
動き自体は、予想してたとおりできました。
セルの中にmyfun(1,F1,F2,F3)の様に直接式を入れることで再現できました^^


お二人とも初心者の質問に回答していただきありがとうございました。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。