Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 无法在其他类的方法中将类对象用作参数_Vba - Fatal编程技术网

Vba 无法在其他类的方法中将类对象用作参数

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

我是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测试
指定对象时,需要使用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子例程,该子例程调用括号时不会出现问题。为什么括号不影响那里的事情,但却影响其他地方的事情?