2012-07-05 66 views
0

我一直在試圖建立在VBA子程序我訪問應用程序:VBA MS Access 2010如何調用對象的子程序?

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 

一個人應該給定的產品只需添加到產品的集合,並設置參照用戶參考,如果是互助真正。

一個人應該工作...問題是,我不知道如何調用 我目前的嘗試是:

User.addProduct(Product, 0, True) 

但IDE想在年底有=所以我認爲這會工作:

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

但是,這會導致編譯錯誤: Expected function or Variable

+0

您需要聲明爲公共函數:public sub不返回值或對象。 – Trace 2012-07-05 12:51:01

+0

但我不想返回一些東西,它應該只是將該產品添加到該用戶的集合中。有沒有辦法實現這個? – Oli 2012-07-05 12:54:37

+0

因爲'Me'是一個對象,所以在分配'Product.setProjectmanager = Me'時不需要使用'Set'? – Gaffi 2012-07-05 12:57:30

回答

1

嘗試調用與該行:

User.addProduct Product, 0, True

Call User.addProduct(Product, 0, True)

取出()或使用Call關鍵字應該爲你工作。

+0

非常感謝,這就是我的問題的答案。 – Oli 2012-07-05 21:11:59

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 

而對於私人產品類的屬性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> 

和getter/setters:

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

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

如果類型是一個對象,則需要使用SET而不是LET。

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

也許我的意圖是錯誤的,因爲我沒有看到爲每個案例添加Me的目的。但這是我能想到的最好的。

+0

我遺漏了一個循環來在集合中添加多個類對象實例。 – Trace 2012-07-05 13:13:54

+0

好的,在你的情況下,集合被稱爲「用戶」。 – Trace 2012-07-05 13:15:34

+0

哇,謝謝,這可以幫助我很多,我只是習慣了VBA,我的java經驗dosent相當有幫助^^ – Oli 2012-07-05 21:11:49