VBA:Dim可将集合设置为
我试图使用一个文件名集合来循环遍历该集合中的每个项 我不知道如何将集合分配给VBA:Dim可将集合设置为,vba,collections,Vba,Collections,我试图使用一个文件名集合来循环遍历该集合中的每个项 我不知道如何将集合分配给Dim,以便轻松调用该集合中的项目 我得到的是: Sub VlookupMGCCode(ByRef reports, ByRef item1, ByRef item2, ByRef item3, ByRef item4) Dim lastrow As Integer Dim wRange As Range Dim blankRange As Range Dim temp As Object lastrow = Cel
Dim
,以便轻松调用该集合中的项目
我得到的是:
Sub VlookupMGCCode(ByRef reports, ByRef item1, ByRef item2, ByRef item3, ByRef item4)
Dim lastrow As Integer
Dim wRange As Range
Dim blankRange As Range
Dim temp As Object
lastrow = Cells(Rows.count, "A").End(xlUp).Row
Set wRange = Range("$T$7:$T$" & lastrow)
temp = CollectReports(item1, item2, item3, item4)
For x = 1 To 3
Set blankRange = wRange.SpecialCells(xlCellTypeBlanks)
blankRange.FindNext("").FormulaR1C1 = "=VLOOKUP(RC[-18],'[" & temp.Item(x) & "]Sheet1'!C1:C31,31,FALSE)"
With blankRange
.FillDown
.Copy
.PasteSpecial Paste:=xlPasteValues, SkipBlanks:=False
End With
Next
End Sub
为了避免混淆,我只从
x=1运行到3
,因为集合中只有前三项适用于当前正在运行的报表。最后一种适用于不同的类似报告,该报告也将用于收集
如您所见,我试图将
集合
分类为对象
,因此得到对象变量或未设置块变量的运行时错误
你能告诉我怎么做吗
谢谢大家! 我想你可能做得对。问题在于分配temp
时没有使用set
设置温度=收集报告(项目1、项目2、项目3、项目4)
您还可以将temp
定义为集合
,但是Object
应该没问题。当我将temp
设置为Collection
时,它好像需要一个参数作为集合中某个项目的索引。@Tawm你能详细说明一下你说的像需要一个参数一样是什么意思吗?我已经对此进行了相当彻底的测试,我觉得NYCdotNet的答案是正确的。
Function CollectReports(ByRef item1, ByRef item2, ByRef item3, ByRef item4) As Collection
Dim reports As New Collection
reports.Add Item:=item1, Key:="1"
reports.Add Item:=item2, Key:="2"
reports.Add Item:=item3, Key:="3"
reports.Add Item:=item4, Key:="4"
Set CollectReports = reports
End Function