VBA字典运行时错误1004

时间:2018-05-15 18:24:18

标签: vba dictionary

我正在尝试根据名称对行进行排序,并将它们放在自己的工作表中。我正在使用字典来跟踪每个字典的当前行。我已经包含了对Microsoft Scripting Runtime的引用。每次运行时,它都会到达代码中指示的行,然后抛出运行时错误1004,应用程序定义或对象定义的错误。此外,当我观看nameDict时,值为:<Object variable or With block variable not set>,但类型为Dictionary。这是因为它没有正确初始化吗?我已经阅读了几种不同的方法来初始化字典,并对最佳方式感到困惑。所有其他变量和函数都可以正常工作,因为它们已经独立测试,并且在其他潜艇中进行了测试。

Private Sub sortTeamWork()
Dim nameDict As New Scripting.Dictionary
Dim index As Integer
    index = getTargetColumn("Last Name")
    For i = CInt(getUsedRows()) To 2 Step -1
        name = Cells(i, index - 1) + " " + Cells(i, index)
        'The below line is where the error occurs
        If nameDict.Exists(name) Then
            nameDict.Items(name) = nameDict.Items(name) + 1
            Cells(i, index).EntireRow.Copy Destination:=Worksheets(name).Range("A" & nameDict(name))
        Else
            nameDict.Items(name) = 2
            Cells(i, index).EntireRow.Copy Destination:=Worksheets(name).Range("A" & nameDict(name))
        End If
    Next i

End Sub

工作表上有一个标题我试图将行复制到第一行并从那里开始递增。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:-1)

您必须通过转到VBA project -> Tools -> References: Tick Microsoft Scripting Runtime.添加引用并使用词典类型

或 你可以做一个像

这样的后期绑定
Dim nameDict As Object
set nameDict = createObject("Scripting.Dictionary")

确保在模块顶部设置Option Explicit。这将指出所有编译器错误。