Ошибка времени выполнения словаря VBA 1004 - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь сортировать строки по именам и помещать их в свои собственные таблицы.Я использую словарь, чтобы отслеживать текущую строку для каждого.Я включил ссылку на 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

На листе есть заголовок, к которому я пытаюсь скопировать строку, поэтому он должен начинаться со строки2 и прирост оттуда.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 15 мая 2018

Вы должны либо добавить ссылку, перейдя в VBA project -> Tools -> References: Tick Microsoft Scripting Runtime. и использовать типы словаря

, либо вы можете выполнить связывание, например

Dim nameDict As Object
set nameDict = createObject("Scripting.Dictionary")

, убедитесь, что установлено Option Explicitв верхней части модуля.Это укажет на все ошибки компилятора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...