将目标设置为工作表中的最后一行 - 对象必需错误

时间:2016-06-15 15:27:36

标签: excel vba excel-vba object dictionary

我正在调用此过程三次,因为我希望将一系列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工作表。

1 个答案:

答案 0 :(得分:1)

Set - 关键字用于声明对象,当您要声明变量时,只需使用Dim。您应该将lastRowdestination声明为整数。然后destination = lastRow不会抛出任何错误。 (尽管vba使用Variant类型解释每个未声明的变量,但从技术上讲,您只需删除Set)。