将变量作为参数传递给VBA中的函数

时间:2015-04-27 17:00:33

标签: excel vba excel-vba

我有一个功能

Dim dict As Object
varray = Range("B4:B" & finalRow - 1).Value
dict = convertToDict(varray)

我试图从子

调用此函数
Object

但它会引发错误:

  

运行时错误450,错误的参数数量或无效的属性

我在这里犯的错误是什么?

我正在传递变体,结果是template="instance('fr-form-instance')"

2 个答案:

答案 0 :(得分:2)

因为您正在处理 对象 ,所以在功能和子资源中都需要设置

Function convertToDict(arrayIp As Variant) As Object
    Dim dict As Object
    Set dict = CreateObject("scripting.dictionary")
    For Each element In arrayIp

        If dict.exists(element) Then
            dict.Item(element) = dict.Item(element) + 1
        Else
            dict.Add element, 1
        End If
    Next
    Set convertToDict = dict
End Function

Sub qwerty()
    Dim dict As Object
    finalRow = 10
    varray = Range("B4:B" & finalRow - 1).Value
    Set dict = convertToDict(varray)
End Sub

答案 1 :(得分:1)

由于dict是一个对象,因此在分配时需要使用Set。试试

Set dict = convertToDict(varray)