機能過負荷、UDFファイルをExcel VBA
-
09-06-2019 - |
質問
私が使っている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算し、その適切な機能ときに何を、どう---
所属していません StackOverflow