我正在尝试在我的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
答案 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。