Vba 将UDT数组的特定元素传递给函数

Vba 将UDT数组的特定元素传递给函数,vba,excel,Vba,Excel,因此,我有一个UDT设置如下: Public Type UserInfo name as string username as string active_time as double End Type 然后,我创建一个这种类型的数组: Dim list_of_users() as UserInfo 'Populate array here 我要做的是将活动的_时间值作为数组传递到一个单独的函数中。比如: 'StdDev function defined elsewhere stan

因此,我有一个UDT设置如下:

Public Type UserInfo
name as string
username as string
active_time as double
End Type
然后,我创建一个这种类型的数组:

Dim list_of_users() as UserInfo
'Populate array here
我要做的是将活动的_时间值作为数组传递到一个单独的函数中。比如:

'StdDev function defined elsewhere    
standard_dev_all = StdDev(list_of_users().active_time) 
这可能吗?我想我可以修改这个函数来处理我的UDT,但我的值比活动时间多得多,这似乎会让它变得非常混乱。

您不能将其作为

UDTvariable.Element
' or 
UDTvariable().Element
变成一个函数。我是说

  • 第一个无效,因为尚未指定数组元素(不是元素的元素)的索引
  • 第二个也是无效的
  • 解决方法是将其传递给您的函数

    Answer = Stdev(UDTVariable)
    
    在函数内部,你可以这样做

    Function Stdev(ByRef UDTVariableTypeName UDTVariable)
        for i = 1 to N
            Something = UDTVariable(i).Element
            ' so on and so forth
        next i
    
        Stdev = SomeAnswer
    End Function
    

    您可以省略编写
    ByRef
    ,因为这是传递参数的默认方式,但为了清晰起见,我保留了它。

    我将通过ref传递
    孔数组用户列表(),这对您很有用。如果这是你想要的,我会很感激你的投票。谢谢:)谢谢你的澄清,这就是我想我应该做的。