我的函数的意图在文档字符串中进行了解释。但是,当我运行它时,我得到一个“运行时错误'91':对象变量或未设置 block 变量”,并突出显示一行代码,如下所示。我找不到这个问题的根源,特别是因为我对 VBA 还很陌生。任何帮助将不胜感激!
'==============================|Range_Collection FUNCTION|=============================='
' Given a collection and a range, add each value in that range to the collection, except
' for False values.
Function Range_Collection(col As Collection, rng As Range) As Collection
Dim Val As Variant
For Each Val In rng
If Not Val.Value = False Then
col.Add Val.Value ;************** THIS CODE IS HIGHLIGHTED************
End If
Next Val
Set Range_Collection = col
End Function
最佳答案
假设您的工作表如下所示
这是我运行代码时得到的
除了我的评论,看到这个
语法是 col.add "Item","Key"。 key 必须是唯一的。如果您有重复的值,那么按照我的建议使用 OERN 或使用唯一键。
Sub Sample()
Dim c As New Collection
For Each itm In Range_Collection(c, Range("A1:A5"))
Debug.Print itm
Next
End Sub
Function Range_Collection(col As Collection, rng As Range) As Collection
Dim rVal As Variant
For Each rVal In rng
If Not rVal.Value = False Then
On Error Resume Next
col.Add rVal.Value, CStr(rVal.Value)
On Error GoTo 0
End If
Next rVal
Set Range_Collection = col
End Function
关于vba - 添加方法VBA上的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353589/