1

これに関するスレッドや質問がたくさんあることは知っていますが、一般的に、エラーがどこにあるかは明らかです。ほとんどの人は、オブジェクトを移動するときに SET キーワードを使用していません。私は。

何が起こっているかは次のとおりです。

これはExcelシートにあるので、列を追跡してインデックスを作成するための小さな関数セットを作成しました。これにより、アプリが実行されるたびに列のインデックスが再作成されるため、.Cells(row_num, pCust_index("custID"))列が変更された場合などに行うことができます。

custContagions というフォームがあります。これは、ユーザーが顧客の感染状況を追加/削除/編集できるようにする小さなモーダル ウィンドウです。次のプロパティが含まれています。

Private pCust_index as dictionary

また、次のプロパティ セッターも含まれています。

Public Property Set set_cust_index(ByRef custIndex As Dictionary)
    Set pCust_index = New Dictionary
    Set pcust_index = custIndex
End Property

かなり簡単ですよね?辞書オブジェクトを受け取り、インデックスをリセットして、渡された既存のオブジェクトを指します。

さて、呼び出しフォームには反対側があります:

Private Sub newCustContagious_LBL_Click()
    Dim contForm as New custContagions
        Call contForm.set_cust_index(pCust_index)  'note pCust_index is a private here too
        Call contForm.Show
...

set_cust_index 呼び出しで Invalid Use of Property コンパイラ エラーが発生します。

私は何を取りこぼしたか?

4

1 に答える 1

2

ほとんどの人は、オブジェクトを移動するときに SET キーワードを使用していません

次に、オブジェクトを動かしていません。キーワードは、Setオブジェクトを移動する方法です。を直接コピーすること
もありますが、ほとんどの人がそうしているとは思いません。CopyMemoryObjPtr

かなり簡単ですよね?

そうではありません。辞書を作成し、すぐに破棄して、パラメーターとして渡された別の辞書に置き換えます。2 行のうち最初の行を削除し、param を作成する必要がありByValます。

Public Property Set set_cust_index(ByVal custIndex As Dictionary)
    Set pcust_index = custIndex
End Property

Invalid Use of Property コンパイラ エラーが発生します

プロパティを宣言し、それをサブとして使用しました。プロパティを使用して、次のことを行う必要があります。

Set contForm.set_cust_index = pCust_index

その時点で、set_cust_index名前は見栄えがよくありません。sub( Public Sub set_cust_index(ByVal custIndex As Dictionary)) の場合は適切な名前になりますが、プロパティの場合はPublic Property Set cust_index(ByVal custIndex As Dictionary).

于 2013-07-07T20:10:32.160 に答える