我正在研究一個項目,並遇到了一些我不明白的東西。將數組分配給類成員時,Let
和Get
名稱不能相同。如果是這樣,我得到的錯誤:Excel 2010 vba數組作爲類成員錯誤
Definitions of property procedures for the same property are inconsistent, or property procedure has an optional parameter, a ParamArray, or an invalid Set final parameter
誰能告訴我,如果我只是做錯了什麼,或者如果這是隻是它是如何。下面的代碼生成上面的消息。
測試代碼:
Sub loadServer()
Dim testServer As AvayaServer
Dim i As Long
Dim arr() As Variant
arr = Array("1", "2", "3", "4", "5")
Set testServer = New AvayaServer
testServer.Name = "This Sucks"
testServer.Skill = arr
MsgBox testServer.Skills(4)
MsgBox testServer.Name
End Sub
類代碼:
Private pName As String
Private pSkills() As String
Public Property Get Skills() As Variant
Skills = pSkills()
End Property
Public Property Let Skills(values() As Variant)
ReDim pSkills(UBound(values))
Dim i As Long
For i = LBound(values) To UBound(values)
pSkills(i) = values(i)
Next
End Property
將'values()As Variant'更改爲'Values As Variant' –
@simoco謝謝!我知道我必須失去一些愚蠢的東西 – vbnoob
@vbnoob它確實很愚蠢(這個東西,不是你錯過它) - 一個奇怪的怪癖。 'values As Variant'將是一個Variant,你稍後用來存儲一個數組,'values()As Variant'是一個Variant類型的數組。數組功能只能分配給前者。我還假設'testServer.Skill'(注意不是「s」)只是上面的拼寫錯誤。如果不是,那麼改變你的代碼,我建議在你的模塊的頂部加上'Option Explicit'。 –