2016-04-01 41 views
0

VBAと関数のExcel関数を呼び出す必要があります。VBA関数に未定義の引数を渡します。

私は変数の引数の数を知りません(var1から...)。

配列を変換してパラメータとして適用する方法はありますか? :最終的にkwargsからPythonでのようなものがあるが

Application.Run("MyFunct", fixParam1, fixParam2, var1, var2 ... varx) 

私は...多分

Application.run("myFunct", fixParam1, fixParam2, kwargs(myArray)) 

し、paramArrayで何か?

mySub(fixParam1, fixParam2, ParamArray var() as Variant) 
    Application.run([here I'm not sure...??]) 
+0

:次に、あなたが関数に配列を渡すことができ

Function testFunction(args()) 

をあなたはコメントで言った)私たちに 'myFunct'のために定義された引数リストを与えてください。あなたがそれを変更することができない場合は、それを一致させる必要があります。 –

+0

myFunctは2つの固定引数で定義され、その後1〜N個のオプション引数... thats難しい解決しようとします。 例えば、fix1 fix2 var1で1回、その後にfix1、fix2、var1、var2、var3で1回呼びます。 – OpenStove

答えて

0

myFunctを変更して処理できる場合は、配列を渡すことができます。 http://www.cpearson.com/excel/passingandreturningarrays.htm

Application.run("myFunct", fixParam1, fixParam2, myArray) 

だから私はmyFunctはこのような引数を受け入れることを推測しています:fixParam1、fixParam2は、[VAR1]、[VAR2]、...ブラケットはオプションの引数を示しています。だからあなたはいくつかのオプション引数を持つかもしれません。

OPTION 1 だから、すべての引数を持つ配列を作成し、このようにそれを呼び出す:

Application.Run("MyFunct", fixParam1, fixParam2, myArray(0), myArray(1), _ 
    myArray(2), myArray(3), myArray(4), myArray(5)) 

うまくいけば、呼び出された関数は空白の入力を処理することができます。

OPTION 2 myFunctは、追加の引数を処理できない場合は、このような何かしなければならないことがあります。

Select Case argCount 
    Case 1 
     Call Application.Run("MyFunct", fixParam1, fixParam2, myArray(0)) 
    Case 2 
     Call Application.Run("MyFunct", fixParam1, fixParam2, myArray(0), myArray(1)) 
    Case 3 
     Call Application.Run("MyFunct", fixParam1, fixParam2, myArray(0), myArray(1), myArray(2)) 
    Case 4 
     Call Application.Run("MyFunct", fixParam1, fixParam2, myArray(0), myArray(1), myArray(2), myArray(3)) 
End Select 

ないかなりが、作品を。

+0

実際、「myFunct」は与えられた関数です。変更しないでください... 呼び出された関数は配列を自動的に新しいパラメータとして認識しますか?その場合、引数として配列を渡すことはできません...奇妙に見える – OpenStove

+0

引数は単純にデータです。したがって、不明な数の値を渡す必要がある場合は、配列を使用します。 –

+0

myFunctは変更できないので、それに合わせる必要があります。指定されたよりも多くの引数を渡すことはできません。いくつかの引数はオプションであるため、柔軟性を持たせることができます。 –

1

このようなパラメータとして配列を受け取る関数定義:あなたのように( `myFunct`を変更することはできませんので

testFunction myArray 
関連する問題