2011-07-10 5 views
10

私はExcel 2007でvbaを使用しており、クラスモジュールのコードを記述しています。Let/Get Propertiesのオプションのパラメータはどのように機能しますか?

1)は、次のコードでも可能ですか?...
は基本的に私は2つの列挙型を持って、彼らにeDATASETeDATATSUBSETを呼び出します。 eDATASETからの特定の値は、Letプロパティのオプションで渡されたパラメータからの割り当てをトリガーする必要があります。このような何か:オブジェクトを呼び出すときに、私も書き込み可能なプロパティに任意のパラメータを渡すにはどうすればよい

Public Property Let foo(Optional ByVal lngSubSet as eDATASUBSET, _ 
         ByVal lngSuperSet as eDATASET) 
    Select Case lngSuperSet 
     Case eDATASET.abc, eDATASET.def 
      mlngBar = lngSuperSet 
     Case eDATASET.xyz 
      '// if lngSubSet not passed, trigger error code... 
      mlngBar = lngSubSet 
    End Select 
End Property 

2)... Optionalパラメータの一見後方配置とは別に
は(オプションと比較関数とサブのパラメータ)、この機能に関するドキュメントを見つけるのが難しいです。 vbaのヘルプには次のように書かれています。

オプション。引数が不要であることを示します。使用する場合、引き続きarglist内のすべての引数はオプションでなければならず、オプションキーワードを使用して宣言する必要があります。 Property Let式の右側がオプションではないことに注意してください。

および以下からvbusers.com。どちらも使い方については説明しません。だから私は、コードモジュールからオブジェクトを呼び出すオプションパラメータ... oObj.foo = ???

3を渡すだろうか)これを行うには良い方法はありますか?...
は、私は(OOPの基本的な理解を持っています少なくともvbaでどのように実装されているか)。条件付きでオブジェクトにパラメータを受け入れるより良い方法はありますか?

+0

[VBAクラスモジュールのプロパティを許可する - 複数の引数を持つことは可能ですか?](http:// stackoverflow。com/questions/13823367/let-property-of-vba-class-modules-it-able-to-multiple-arguments) –

答えて

10

1)ありコードが可能です。

2)これは、引数を渡す方法です:myObjectと仮定すると

は、あなたのクラスのオブジェクトです:

myObject.foo(lngSubSet) = lngSuperSet 

引数リストの引数の配置は確かに奇妙に見えるん、それはあなたのためのVBAです。 4つの引数があり、そのうち2つはオプションで、右辺にも引数があるとします。

Public Property Let foo(arg1, arg2, Optional arg3, Optional arg4, _ 
         RHS) 

をして(あなたがarg4のオプトアウトしていると仮定した場合)、このようにそれらを使用する:あなたはこのようにそれらを置くだろう

myObject.foo(arg1,arg2,arg3) = RHS 

3)これを行うには良い方法はありますか?あなたが誰に依頼するかによって、いつもあります。 lngSubSet引数は別のプロパティとして完全に持つことができます。それが私のやり方です。しかし、あなたの場合、あなたのやり方はあなたのためにうまくいくかもしれません。私は知らない、それは主に好みの問題であり、あなたの特定のアプリケーションに依存している。

+0

あなたは+++ [ここ](http:// stackoverflow.com/questions/13823367/let-property-of-vba-class-modules-is-it-possible-to-have-multiple-arguments/26488170#26488170)と[here](http://chat.stackexchange .com/rooms/14929/vba) –

+1

ハ!はい、私は本当に地球上で何が起こっていたのだろうと思っていました。 –

関連する問題