我有一个包含私有属性m_Invalid() as String
的ClassModule。
我需要的是2x属性,一个允许公共访问以获取整个数组,另一个允许私有访问以向数组添加密钥。
我已经想出了这个,但如果我尝试使用AddInvalid(Me.AddInvalid ("Test")
我会收到编译错误 -
无效的财产用户
有人知道我做错了什么吗?谢谢,
Public Property Get Invalid() As String()
Invalid = m_Invalid
End Property
Public Property Let AddInvalid(ByVal Value As String)
Dim ArrayLength As Integer
ArrayLength = UBound(m_Invalid)
ReDim Preserve m_Invalid(ArrayLength)
m_Invalid(ArrayLength) = Value
End Property
答案 0 :(得分:3)
为什么AddInvalid
需要成为财产?只需将其更改为Sub(或Function)即可,但名称不能与现有属性相同:
Public Sub AddItem(psTest As String)
Dim ArrayLength As Integer
ArrayLength = UBound(m_invalid)
ReDim Preserve m_invalid(ArrayLength)
m_invalid(ArrayLength) = psTest
End Sub
此外,您的代码没有按照您的想法执行。从我所看到的,它所做的全部是ReDim它已经是相同的大小,然后覆盖最后一个值...?在ReDim语句中添加一个以使数组增长:
ReDim Preserve m_invalid(ArrayLength + 1)