2017-04-11 42 views
1

所以我想通過一個用戶窗體中的屬性通過字典鍵刪除字典中的項目。到目前爲止,我已經成功地添加了一個新的詞典項目,計數詞典中的項目並獲得一個帶有userform屬性的項目。所以這一切都是功能性的,但我無法得到刪除(鍵)功能。是否可以使用userform屬性來刪除一個詞典中的項目?

這是我的用戶表單中的屬性。 (也許我應該使用get屬性?):

Public Property Let Materialremove(ByVal PartNumber As String) 
    DicMaterial.Remove (PartNumber) 
End Property 

這裏是我呼籲我的財產:

If UBidStatus.Materialexists(PartNumber) Then 
    UBidStatus.Materialremove (PartNumber) 
End If 

我得到一個編譯錯誤:

Invalid use of property in VBA

+0

不應該是'...(ByVal PartNumber As VARIANT)'? – Jeeped

+0

'如果DicMaterial.Exists(PartNumber)然後DicMaterial.Remove PartNumber' – Jeeped

+1

我不知道這是否是問題,但我會讓它成爲一個函數。 –

回答

1

我同意Doug Glancy,我認爲你應該把它變成一個功能。我不認爲你的方法是一個好方法。你遇到問題的原因是因爲你正在試圖像一個函數那樣處理一個屬性。您可以使代碼如此工作:UBidStatus.Materialremove = PartNumber但我強烈建議不要這樣做,因爲下一位開發人員必須查看代碼後面的代碼,並找出它的意思,因爲您嘗試執行的操作沒有任何邏輯意義。 你應該把屬性變成一個函數。您需要賦值運算符才能使行生效,因爲這是Let屬性語句的用途:將值分配給屬性。但是,由於您試圖強制某個屬性像一個函數一樣行事,因此當有人試圖讀取代碼時沒有任何意義。

相關問題