2017-04-11 101 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属性语句的用途:将值分配给属性。但是,由于您试图强制某个属性像一个函数一样行事,因此当有人试图读取代码时没有任何意义。

相关问题