Excel vba函数返回
我为我的问题find了这个解决scheme 。 它的工作正常,如下所示:
Dim CNPJs As New Collection, a Dim i As Long Dim rng As Range U_L = Plan2.Range("A" & Rows.Count).End(xlUp).Row On Error Resume Next For Each rng In Plan2.Range("A2:A" & U_L) CNPJs.Add rng.value, rng.value Next
但现在我想build立一个函数,返回这个独特的数组,因为我会用这个很多次…我试过这个:
Public Function unArray(myRange As Range) As Collection Dim arr As Collection, a On Error Resume Next For Each rng In myRange arr.Add rng.value, rng.value Next unArray = arr End Function
我称之为:
Sub test() Dim CNPJs As New Collection, a U_L = Plan2.Range("A" & Rows.Count).End(xlUp).Row CNPJs = unArray(Plan2.Range("A2:A" & U_L)) End Sub
但是它返回这个错误:
“ 编译错误: ”
“ 这个论点是必须的”
你可以帮我吗?
集合是一个对象,需要像一个对待,意味着你需要Set
它。 但请记住,这个动作只是创build一个指向RAM内的范围的指针。
对于你的情况只需使用:
Set CNPJs = unArray(Plan2.Range("A2:A" & U_L))
也就是说,对你的代码没有任何影响,但是有两个集合,一个集合被Set
为另一个,交替其中一个也会影响另一个。
如果你还有问题,就问。 🙂
U_L = Plan2.Range("A" & Rows.Count).End(xlUp).Row
这将返回一个长或整数。 范围需要一个string,因此在引用范围时需要将U_L转换为string。
CNPJs = unArray(Plan2.Range("A2:A" & CStr(U_L)))