Vba 无法在其他类的方法中将类对象用作参数
我是VBA新手,很惊讶它没有正式的动态数组,所以我尝试制作一个简单的数组来满足我的需要: Public count As Integer Private max As Integer Private storage(1 To 5) As DVprogram Private Sub class_initialize() count = 0 max = 5 End Sub Public Sub add(data As DVprogram) If (count + 1) > max Then updateSize (max + 5) End If storage(count + 1) = data count = count + 1 End Sub 'more code... 当我尝试调用add时,我发现错误对象不支持此属性或方法 Dim test As New DVprogram Dim temp As New progDynArray temp.add (test) 当我将数组类型更改为整数时,一切正常,但当我尝试使用自己的类时,它总是抛出此错误。我试过在ByVal和ByRef之间切换,但都没有任何效果。我也发现了这一点:,但解决方案似乎不是我的问题。试试temp.add测试Vba 无法在其他类的方法中将类对象用作参数,vba,Vba,我是VBA新手,很惊讶它没有正式的动态数组,所以我尝试制作一个简单的数组来满足我的需要: Public count As Integer Private max As Integer Private storage(1 To 5) As DVprogram Private Sub class_initialize() count = 0 max = 5 End Sub Public Sub add(data As DVp
指定对象时,需要使用Set而不是temp.addtest:
Set storage(count + 1) = data
正如Gopi所指出的,在调用add方法时,您需要删除:
temp.add test
除非调用函数或使用Call关键字,否则不要使用括号
编辑:不带调用的括号并不总是会导致问题-它们所做的是首先将要传递的参数作为表达式进行求值,然后再传递该求值的结果。在updateSize max+5的情况下,这不是问题,因为这是您想要的行为——将5添加到max并将该值传递给updateSize。在temp.add test的情况下,您不希望将test作为表达式进行计算。为什么不使用集合的可能重复?删除括号修复了我在错误消息中遇到的问题,但add调用了updateSize子例程,该子例程调用括号时不会出现问题。为什么括号不影响那里的事情,但却影响其他地方的事情?