Excel VBA - 公式写入错误

时间:2017-04-11 09:57:47

标签: excel vba excel-vba

我正在尝试在我的vba代码中加入一个公式,我在其中收到错误。请查看代码,并分享您的想法。

这是我用VBA代码编写的excel函数:

GetUniqueCount(Range,Value)

以下是VBA Code试图利用它:

Sheets("sheet2").Activate
        With ThisWorkbook.Sheets("sheet2").UsedRange
            lastrow = .Rows(.Rows.Count).Row
        End With

    For i = 14 To lastrow
        check = Range("h" & i).Value
        If check <> "" Then
         Range("I" & i).Value = WorksheetFunction.GetUniqueCount(sheet1!.Range("A1:B100"), check)
        Else
        Range("I" & i).Value = ""
    Next

该功能的范围来自不同的表格。如何在VBA中编写它?

这是它的功能:

Function GetUniqueCount(Rng1 As Range, Lookup As String) As Long
Dim x, dict
Dim i As Long, cnt As Long
Set dict = CreateObject("Scripting.Dictionary")
x = Rng1.Value
For i = 1 To UBound(x, 1)
    If x(i, 1) = Lookup Then
        dict.Item(x(i, 1) & x(i, 2)) = ""
    End If
Next i
GetUniqueCount = dict.Count
End Function

2 个答案:

答案 0 :(得分:2)

您的代码中存在其他可能的错误,不合格的Range

由于Function GetUniqueCount不是Excel内置的WorksheetFunction,而是您自己的 UDF ,因此您无需使用WorksheetFunction.GetUniqueCount调用它,而只需{ {1}}。

尝试以下代码:

GetUniqueCount

答案 1 :(得分:1)

GetUniqueCount的名称没有工作表函数。如果这是你的代码中的函数,那么调用它的方式就是: -

Range("I" & i).Value = GetUniqueCount("Sheet1".Range("A1:B100"), check)

此代码假定您的函数与调用过程在同一代码表上或声明为public。它必须带两个参数,第一个必须是范围,第二个是check相同的数据类型。如果您没有声明check(这不是一个好主意),那么它的数据类型将是Variant。