0

Accessアプリケーション用にVBAでサブルーチンを作成しようとしています。

Public Sub addProduct(ByRef Product As Product, AsFoo As Integer, Optional Mutual As Boolean = True)
    Products.Add (Product)

    If (Mutual) Then
        Select Case AsFoo
            Case 0
                Product.setProjectmanager = Me
            Case 1
                Product.setVIP1 = Me
            Case 2
                Product.setVIP2 = Me
            Case 11
                Product.setVIP1A = Me
            Case 22
                Product.setVIP2A = Me
        End Select
    End If
End Sub

Mutualがtrueの場合は、指定された製品を製品のコレクションに追加し、参照をユーザー参照に設定する必要があります。

それはうまくいくはずです...問題は、私の現在の試みが次のように呼ばれる方法がわからないことです:

User.addProduct(Product, 0, True)

しかし、IDEは最後に=を付けたいので、それでうまくいくと思いました。

User.addProduct(Product, 0, True) = Product

しかし、それはコンパイルエラーを引き起こします: Expected function or Variable

4

2 に答える 2

1

その行を次のように呼び出してみてください:

User.addProduct Product, 0, True

また

Call User.addProduct(Product, 0, True)

を削除する()か、Callキーワードを使用するとうまくいくはずです。

于 2012-07-05T13:09:02.030 に答える
1

これがあなたのやりたいことかどうかはわかりませんが、クラス インスタンスをコレクションに追加する場合は、次のように提案します。

Sub Main_sub()

dim colProduct as Collection 
dim cProduct as clsProduct
dim asFoo as integer    
dim Mutual as boolean


set colProduct = new collection
set cProduct = new clsproduct

asFoo = ? 'Define
Mutual = ? 'Define

'if the AddProduct function resides in the clsProduct class: 
set cProduct = cproduct.AddProduct(cProduct, asFoo, Mutual)
colProduct.add cProduct

set cProduct = nothing
set colProduct = nothing

end sub

プライベート Product クラス プロパティ Projectmanager、VIP1、VIP2、VIP1A、VIP2A の場合

Public function addProduct(cProduct as clsProduct, AsFoo As Integer, Optional Mutual As Boolean) as cProduct

            If (Mutual) Then 
                Select Case AsFoo 
                Case 0 
                    cProduct.Projectmanager = Me 
                Case 1 
                    cProduct.VIP1 = Me 
                Case 2 
                    cProduct.VIP2 = Me 
                Case 11 
                    cProduct.VIP1A = Me 
                Case 22 
                    cProduct.VIP2A = Me 
                End Select 
            End If
set addProduct = cProduct
End Sub 

クラス モジュールでプロパティを宣言するには、次のようにします。

Private pVIP1 as <Type>

そしてゲッター/セッター:

Public Property Get VIP1() As <Type>
    VIP1 = pVIP1
End Property

Public Property Let VIP1(tVIP1 As <Type>)
    pVIP1 = tVIP1
End Property

型がオブジェクトの場合、LET の代わりに SET を使用する必要があります。

Public Property SET VIP1(tVIP1 As <Type>)
    SET pVIP1 = tVIP1
End Property

それぞれのケースに私を追加する目的がわからないので、あなたの意図が間違っているのかもしれません。しかし、これは私が思いつくことができる最高のものでした。

于 2012-07-05T13:10:33.803 に答える