質問

私が使っているExcel VBAに書き込みUDF.たいと思い過負荷、自分のUDFファイルのバージョンが異なっているという異なる引数を通す。

としてVBAるということを、誰でもらい、非汚向が同じゴールは何ですか?はっき用オプションの引数がありそうです。

役に立ちましたか?

解決

を宣言するのにお引数として Optional Variants, きますので、その試験が彼らの欠落を使用 IsMissing() またはその型を使用 TypeName(), として以下の例:

Public Function Foo(Optional v As Variant) As Variant

    If IsMissing(v) Then
        Foo = "Missing argument"
    ElseIf TypeName(v) = "String" Then
        Foo = v & " plus one"
    Else
        Foo = v + 1
    End If

End Function

ここから呼び出すことができるワークシートとして =FOO(), =FOO(番号), や =FOO("文字列").

他のヒント

できれば区別するパラメータの数、そのようなことば:

Public Function Morph(ParamArray Args())

    Select Case UBound(Args)
    Case -1 '' nothing supplied
        Morph = Morph_NoParams()
    Case 0
        Morph = Morph_One_Param(Args(0))
    Case 1
        Morph = Two_Param_Morph(Args(0), Args(1))
    Case Else
        Morph = CVErr(xlErrRef)
    End Select

End Function

Private Function Morph_NoParams()
    Morph_NoParams = "I'm parameterless"
End Function

Private Function Morph_One_Param(arg)
    Morph_One_Param = "I has a parameter, it's " & arg
End Function

Private Function Two_Param_Morph(arg0, arg1)
    Two_Param_Morph = "I is in 2-params and they is " & arg0 & "," & arg1
End Function

場合は、別の機能を類型化したうえで、それだけ効果的にかなうC++およびその他の言語とオーバーライド機能は、電話による署名を表します。思いのを見て思ったこと。

Public Function MorphBySig(ParamArray args())

Dim sig As String
Dim idx As Long
Dim MorphInstance As MorphClass

    For idx = LBound(args) To UBound(args)
        sig = sig & TypeName(args(idx))
    Next

    Set MorphInstance = New MorphClass

    MorphBySig = CallByName(MorphInstance, "Morph_" & sig, VbMethod, args)

End Function

をクラスとメソッドの数に一致する署名も予定しているとのことです。かもエラー取り扱いは、ご注文の種類を識別限定:日TypeNameダブルです。

VBAが汚.なんなのかが手軽に行うことができな偽の過負荷:

過去に私のいずれかふOptionals、多彩な機能のためのインスタンス

Foo_DescriptiveName1()

Foo_DescriptiveName2()

方から評価を頂きましオプション引数として良識あるデフォルトでない限り、引数リストを取得しみ、その作成機能を呼びかけだ。

まmightaも検討を使用し異形データタイプをお引数リストとして何がどのようにTypeOf算し、その適切な機能ときに何を、どう---

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top