vba - 将变体作为参数传递给 VBA 中的函数

标签 vba excel

我有一个函数

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
End Function

我尝试从子进程调用此函数

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

但它抛出错误:

Run time error 450, wrong number of arguments or invalid property

我在这里犯了什么错误?

我正在传递一个变体,结果是一个对象

最佳答案

因为您正在处理对象,所以您需要在函数和子函数中Set:

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

关于vba - 将变体作为参数传递给 VBA 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29901783/

相关文章:

excel - 如何使用 "WorksheetFunction.Match"作为具有可变范围的数组

excel - 最简单的 Powershell 导入 Excel 问题

excel - 关闭 VBA 用户窗体中打开的工作簿时出错

VBA:用于跨表操作的奇怪的慢宏(7k 行需要 15 分钟!)

excel - 如何使用 VB 代码将 MS Excel 中的单元格中的值复制到 MS Word 文件中的字段中?

excel - 在一系列单元格中获取 5 个最常见的分隔子字符串

excel - vbscript 和 excel 删除除最后一张之外的所有工作表

json - Excel Power Query : Error Handling

excel - 无错误时显示“出现错误时转到”(针对特定情况)

vba - 将BeforeDoubleClick_event的模块代码添加到动态创建的工作表中