VBA – 将数组存储在类中 – types不匹配

我一直在寻找,但似乎没有任何伎俩对我来说。 这是问题:

我想存储一个“键”数组这里是我的简单的类:

Private pkeys_length As Integer Private pkeys() As String Public Property Get keys_length() As Integer keys_length = pkeys_length End Property Public Property Let keys_length(arg As Integer) pkeys_length = arg End Property Public Property Get Keys() As String Keys = pkeys() End Property Public Property Let Keys(ByVal arg As String) ReDim pkeys(0 To pkeys_length) As String pkeys = arg End Property 

这就是我想要存储的内容:

 Dim str_pkeys() As String Dim pkey_count As Integer pkey_count = CountPrimaryKeys(stbl) 'Store the keys of that table ReDim str_pkeys(pkey_count) As String keyset_1.keys_length = pkey_count str_pkeys = FindPrimaryKeys(keyset_1.Table) keyset_1.Keys = str_pkeys 

现在,它给出了错误Compile Error: Type mismatch我存储数组时,有几个问题,我不知道如果我实际上得到任何地方。 这是我无法修复的唯一错误。 我所需要做的就是在类中存储string数组。

任何人都熟悉如何去做这个?

我认为你需要在你的Get属性中使用String() ,并且删除Let中的ByVal

 Private pkeys_length As Integer Private pkeys() As String Public Property Get keys_length() As Integer keys_length = pkeys_length End Property Public Property Let keys_length(arg As Integer) pkeys_length = arg End Property Public Property Get Keys() As String() Keys = pkeys End Property Public Property Let Keys(arg() As String) ReDim pkeys(0 To pkeys_length) As String pkeys = arg End Property 

除了这个小devisebuild议:你真的需要一个数组长度的设置? 为什么不把它包含在数组的集合中 – 而只提供Get而不是?