我正在调用此过程三次,因为我希望将一系列CUSIP附加到VBA脚本字典中。
Sub Import_RB_Dict(ws_string As String)
'Uses Scripting Dictionary instead of loop to sum up the TNA of funds in the CNR
'Much faster than traditional loop
Sheets(ws_string).Activate
LR = Range("a1000").End(xlUp).Row
LC = Range("zz1").End(xlToLeft).Column
ReDim Source(1 To LR, 1 To LC)
Source = Range(Cells(1, 1), Cells(LR, LC))
ReDim aRB_Dict(1 To LR, 1 To 2000)
Set RB_List = CreateObject("scripting.dictionary")
Row = 0
For r = 2 To LR
If RB_List.Exists(Source(r, 3)) Then
Array_Row = RB_List(Source(r, 3))
'aRB_Dict(Array_Row, 2) = aRB_Dict(Array_Row, 2) + Source(r, 65) / Source(r, 47)
Else
Row = Row + 1
With RB_List
.CompareMode = vbTextCompare
.Add Source(r, 3), Row
End With
aRB_Dict(Row, 1) = Trim(CStr(Source(r, 3)))
'aRB_Dict(Row, 2) = Source(r, 65) / Source(r, 47)
End If
Next r
Sheets("Request Builder").Select
LastRow = Range("a6500").End(xlUp).Row
Set Destination = LastRow
Destination.Resize(UBound(aRB_Dict, 1) + 1, UBound(aRB_Dict, 2)).Value = aRB_Dict
End Sub
我通过以下
来调用此程序Set RB_List = CreateObject("scripting.dictionary")
RB_List.RemoveAll
Set RB_List = Nothing
Set RB_List = CreateObject("scripting.dictionary")
Import_RB_Dict "Main"
Import_RB_Dict "ETF"
Import_RB_Dict "MAV"
但我的主要代码无法运行,因为我无法分配Set Destination = LastRow
?我收到错误Object Required
实际上该程序甚至不会开始运行。通过使用LastRow变量,我想识别A列中的最后一个空白单元格,并将字典中的所有CUSIP附加到该单元格。我的目标是使用字典来扫描每个工作表,并在三个工作表中的每个工作表中编译所有唯一证券的唯一列表,然后将它们附加到Request Builder
工作表。
答案 0 :(得分:1)
Set
- 关键字用于声明对象,当您要声明变量时,只需使用Dim
。您应该将lastRow
和destination
声明为整数。然后destination = lastRow
不会抛出任何错误。 (尽管vba使用Variant
类型解释每个未声明的变量,但从技术上讲,您只需删除Set
)。